diff --git a/prow/cluster/jobs/istio/test-infra/istio.test-infra.master.gen.yaml b/prow/cluster/jobs/istio/test-infra/istio.test-infra.master.gen.yaml index 1c553be35af..cd0a6b3c4b6 100644 --- a/prow/cluster/jobs/istio/test-infra/istio.test-infra.master.gen.yaml +++ b/prow/cluster/jobs/istio/test-infra/istio.test-infra.master.gen.yaml @@ -180,6 +180,17 @@ postsubmits: max_concurrency: 1 name: deploy-prow_test-infra_postsubmit path_alias: istio.io/test-infra + reporter_config: + slack: + channel: oncall + job_states_to_report: + - success + - failure + - aborted + - error + report_template: 'Deploying prow: {{.Status.State}}. <{{.Spec.Refs.BaseLink}}|Commit + {{.Spec.Refs.BaseSHA}}> <{{.Status.URL}}|View logs> ' run_if_changed: ^prow/cluster/(?:gcsweb/|velodrome/|monitoring/|build/|private/|[^/]+\.yaml$) spec: containers: diff --git a/prow/config/generate.go b/prow/config/generate.go index 58962f982b7..176a4c7f449 100644 --- a/prow/config/generate.go +++ b/prow/config/generate.go @@ -124,13 +124,14 @@ type JobsConfig struct { } type Job struct { - Name string `json:"name,omitempty"` - Command []string `json:"command,omitempty"` - Types []string `json:"types,omitempty"` - Timeout *prowjob.Duration `json:"timeout,omitempty"` - Repos []string `json:"repos,omitempty"` - Regex string `json:"regex,omitempty"` - MaxConcurrency int `json:"max_concurrency,omitempty"` + Name string `json:"name,omitempty"` + Command []string `json:"command,omitempty"` + Types []string `json:"types,omitempty"` + Timeout *prowjob.Duration `json:"timeout,omitempty"` + Repos []string `json:"repos,omitempty"` + Regex string `json:"regex,omitempty"` + MaxConcurrency int `json:"max_concurrency,omitempty"` + ReporterConfig *prowjob.ReporterConfig `json:"reporter_config,omitempty"` Env []v1.EnvVar `json:"env,omitempty"` Image string `json:"image,omitempty"` @@ -662,9 +663,10 @@ func createJobBase(globalConfig GlobalConfig, jobConfig JobsConfig, job Job, Decorate: &yes, ExtraRefs: createExtraRefs(job.Repos, branch, globalConfig.PathAliases), }, - Labels: job.Labels, - Annotations: job.Annotations, - Cluster: job.Cluster, + ReporterConfig: job.ReporterConfig, + Labels: job.Labels, + Annotations: job.Annotations, + Cluster: job.Cluster, } if jb.Labels == nil { jb.Labels = map[string]string{} diff --git a/prow/config/jobs/test-infra.yaml b/prow/config/jobs/test-infra.yaml index 7c30e2240db..24a7779b811 100644 --- a/prow/config/jobs/test-infra.yaml +++ b/prow/config/jobs/test-infra.yaml @@ -34,6 +34,15 @@ jobs: - name: deploy-prow types: [postsubmit] regex: '^prow/cluster/(?:gcsweb/|velodrome/|monitoring/|build/|private/|[^/]+\.yaml$)' + reporter_config: + slack: + channel: "oncall" + job_states_to_report: + - success + - failure + - aborted + - error + report_template: 'Deploying prow: {{.Status.State}}. <{{.Spec.Refs.BaseLink}}|Commit {{.Spec.Refs.BaseSHA}}> <{{.Status.URL}}|View logs> ' cluster: test-infra-trusted max_concurrency: 1 command: diff --git a/prow/genjobs/cmd/genjobs/main.go b/prow/genjobs/cmd/genjobs/main.go index c938212f21b..59974ca21dd 100644 --- a/prow/genjobs/cmd/genjobs/main.go +++ b/prow/genjobs/cmd/genjobs/main.go @@ -67,43 +67,44 @@ type configuration struct { // transform are the available transformation fields. type transform struct { - Annotations map[string]string `json:"annotations,omitempty"` - Bucket string `json:"bucket,omitempty"` - Cluster string `json:"cluster,omitempty"` - Channel string `json:"channel,omitempty"` - SSHKeySecret string `json:"ssh-key-secret,omitempty"` - Modifier string `json:"modifier,omitempty"` - Input string `json:"input,omitempty"` - Output string `json:"output,omitempty"` - Sort string `json:"sort,omitempty"` - ExtraRefs []prowjob.Refs `json:"extra-refs,omitempty"` - Branches []string `json:"branches,omitempty"` - BranchesOut []string `json:"branches-out,omitempty"` - RefBranchOut string `json:"ref-branch-out,omitempty"` - Presets []string `json:"presets,omitempty"` - RerunOrgs []string `json:"rerun-orgs,omitempty"` - RerunUsers []string `json:"rerun-users,omitempty"` - EnvDenylist []string `json:"env-denylist,omitempty"` - VolumeDenylist []string `json:"volume-denylist,omitempty"` - JobAllowlist []string `json:"job-allowlist,omitempty"` - JobDenylist []string `json:"job-denylist,omitempty"` - RepoAllowlist []string `json:"repo-allowlist,omitempty"` - RepoDenylist []string `json:"repo-denylist,omitempty"` - JobType []string `json:"job-type,omitempty"` - Selector map[string]string `json:"selector,omitempty"` - Labels map[string]string `json:"labels,omitempty"` - Env map[string]string `json:"env,omitempty"` - RefOrgMap map[string]string `json:"ref-mapping,omitempty"` - OrgMap map[string]string `json:"mapping,omitempty"` - Clean bool `json:"clean,omitempty"` - DryRun bool `json:"dry-run,omitempty"` - Refs bool `json:"refs,omitempty"` - Resolve bool `json:"resolve,omitempty"` - SSHClone bool `json:"ssh-clone,omitempty"` - OverrideSelector bool `json:"override-selector,omitempty"` - SupportGerritReporting bool `json:"support-gerrit-reporting,omitempty"` - AllowLongJobNames bool `json:"allow-long-job-names,omitempty"` - Verbose bool `json:"verbose,omitempty"` + Annotations map[string]string `json:"annotations,omitempty"` + Bucket string `json:"bucket,omitempty"` + Cluster string `json:"cluster,omitempty"` + Channel string `json:"channel,omitempty"` + SSHKeySecret string `json:"ssh-key-secret,omitempty"` + Modifier string `json:"modifier,omitempty"` + Input string `json:"input,omitempty"` + Output string `json:"output,omitempty"` + Sort string `json:"sort,omitempty"` + ExtraRefs []prowjob.Refs `json:"extra-refs,omitempty"` + ReporterConfig *prowjob.ReporterConfig `json:"reporter_config,omitempty"` + Branches []string `json:"branches,omitempty"` + BranchesOut []string `json:"branches-out,omitempty"` + RefBranchOut string `json:"ref-branch-out,omitempty"` + Presets []string `json:"presets,omitempty"` + RerunOrgs []string `json:"rerun-orgs,omitempty"` + RerunUsers []string `json:"rerun-users,omitempty"` + EnvDenylist []string `json:"env-denylist,omitempty"` + VolumeDenylist []string `json:"volume-denylist,omitempty"` + JobAllowlist []string `json:"job-allowlist,omitempty"` + JobDenylist []string `json:"job-denylist,omitempty"` + RepoAllowlist []string `json:"repo-allowlist,omitempty"` + RepoDenylist []string `json:"repo-denylist,omitempty"` + JobType []string `json:"job-type,omitempty"` + Selector map[string]string `json:"selector,omitempty"` + Labels map[string]string `json:"labels,omitempty"` + Env map[string]string `json:"env,omitempty"` + RefOrgMap map[string]string `json:"ref-mapping,omitempty"` + OrgMap map[string]string `json:"mapping,omitempty"` + Clean bool `json:"clean,omitempty"` + DryRun bool `json:"dry-run,omitempty"` + Refs bool `json:"refs,omitempty"` + Resolve bool `json:"resolve,omitempty"` + SSHClone bool `json:"ssh-clone,omitempty"` + OverrideSelector bool `json:"override-selector,omitempty"` + SupportGerritReporting bool `json:"support-gerrit-reporting,omitempty"` + AllowLongJobNames bool `json:"allow-long-job-names,omitempty"` + Verbose bool `json:"verbose,omitempty"` } // options are the available command-line flags.