diff --git a/ci-operator/config/openshift/cluster-ingress-operator/openshift-cluster-ingress-operator-master.yaml b/ci-operator/config/openshift/cluster-ingress-operator/openshift-cluster-ingress-operator-master.yaml index 3e2dbc2813639..3c4f2dae5ad74 100644 --- a/ci-operator/config/openshift/cluster-ingress-operator/openshift-cluster-ingress-operator-master.yaml +++ b/ci-operator/config/openshift/cluster-ingress-operator/openshift-cluster-ingress-operator-master.yaml @@ -1,4 +1,8 @@ base_images: + claude-ai-helpers: + name: claude-ai-helpers + namespace: ci + tag: latest dev-scripts: name: test namespace: ocp-kni @@ -422,6 +426,22 @@ tests: CHECK_MOD_LIST: "false" test: - ref: go-verify-deps +- as: periodic-jira-agent + cron: 0 9 * * * + steps: + env: + JIRA_AGENT_MAX_ISSUES: "1" + workflow: ingress-jira-agent +- as: periodic-review-agent + cron: '@yearly' + steps: + workflow: ingress-review-agent +- always_run: false + as: address-review-comments + optional: true + skip_if_only_changed: .* + steps: + workflow: ingress-review-agent-trigger zz_generated_metadata: branch: master org: openshift diff --git a/ci-operator/jobs/openshift/cluster-ingress-operator/openshift-cluster-ingress-operator-master-periodics.yaml b/ci-operator/jobs/openshift/cluster-ingress-operator/openshift-cluster-ingress-operator-master-periodics.yaml index bfc4220f39a8e..538af6c1f59d3 100644 --- a/ci-operator/jobs/openshift/cluster-ingress-operator/openshift-cluster-ingress-operator-master-periodics.yaml +++ b/ci-operator/jobs/openshift/cluster-ingress-operator/openshift-cluster-ingress-operator-master-periodics.yaml @@ -1,4 +1,170 @@ periodics: +- agent: kubernetes + cluster: build03 + cron: 0 9 * * * + decorate: true + decoration_config: + sparse_checkout_files: + - .ci-operator.yaml + - Dockerfile + extra_refs: + - base_ref: master + org: openshift + repo: cluster-ingress-operator + sparse_checkout_files: + - .ci-operator.yaml + - Dockerfile + labels: + ci.openshift.io/generator: prowgen + pj-rehearse.openshift.io/can-be-rehearsed: "true" + name: periodic-ci-openshift-cluster-ingress-operator-master-periodic-jira-agent + spec: + containers: + - args: + - --gcs-upload-secret=/secrets/gcs/service-account.json + - --image-import-pull-secret=/etc/pull-secret/.dockerconfigjson + - --lease-server-credentials-file=/etc/boskos/credentials + - --report-credentials-file=/etc/report/credentials + - --secret-dir=/secrets/ci-pull-credentials + - --target=periodic-jira-agent + command: + - ci-operator + env: + - name: HTTP_SERVER_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + image: quay-proxy.ci.openshift.org/openshift/ci:ci_ci-operator_latest + imagePullPolicy: Always + name: "" + ports: + - containerPort: 8080 + name: http + resources: + requests: + cpu: 10m + volumeMounts: + - mountPath: /etc/boskos + name: boskos + readOnly: true + - mountPath: /secrets/ci-pull-credentials + name: ci-pull-credentials + readOnly: true + - mountPath: /secrets/gcs + name: gcs-credentials + readOnly: true + - mountPath: /secrets/manifest-tool + name: manifest-tool-local-pusher + readOnly: true + - mountPath: /etc/pull-secret + name: pull-secret + readOnly: true + - mountPath: /etc/report + name: result-aggregator + readOnly: true + serviceAccountName: ci-operator + volumes: + - name: boskos + secret: + items: + - key: credentials + path: credentials + secretName: boskos-credentials + - name: ci-pull-credentials + secret: + secretName: ci-pull-credentials + - name: manifest-tool-local-pusher + secret: + secretName: manifest-tool-local-pusher + - name: pull-secret + secret: + secretName: registry-pull-credentials + - name: result-aggregator + secret: + secretName: result-aggregator +- agent: kubernetes + cluster: build03 + cron: '@yearly' + decorate: true + decoration_config: + sparse_checkout_files: + - .ci-operator.yaml + - Dockerfile + extra_refs: + - base_ref: master + org: openshift + repo: cluster-ingress-operator + sparse_checkout_files: + - .ci-operator.yaml + - Dockerfile + labels: + ci.openshift.io/generator: prowgen + pj-rehearse.openshift.io/can-be-rehearsed: "true" + name: periodic-ci-openshift-cluster-ingress-operator-master-periodic-review-agent + spec: + containers: + - args: + - --gcs-upload-secret=/secrets/gcs/service-account.json + - --image-import-pull-secret=/etc/pull-secret/.dockerconfigjson + - --lease-server-credentials-file=/etc/boskos/credentials + - --report-credentials-file=/etc/report/credentials + - --secret-dir=/secrets/ci-pull-credentials + - --target=periodic-review-agent + command: + - ci-operator + env: + - name: HTTP_SERVER_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + image: quay-proxy.ci.openshift.org/openshift/ci:ci_ci-operator_latest + imagePullPolicy: Always + name: "" + ports: + - containerPort: 8080 + name: http + resources: + requests: + cpu: 10m + volumeMounts: + - mountPath: /etc/boskos + name: boskos + readOnly: true + - mountPath: /secrets/ci-pull-credentials + name: ci-pull-credentials + readOnly: true + - mountPath: /secrets/gcs + name: gcs-credentials + readOnly: true + - mountPath: /secrets/manifest-tool + name: manifest-tool-local-pusher + readOnly: true + - mountPath: /etc/pull-secret + name: pull-secret + readOnly: true + - mountPath: /etc/report + name: result-aggregator + readOnly: true + serviceAccountName: ci-operator + volumes: + - name: boskos + secret: + items: + - key: credentials + path: credentials + secretName: boskos-credentials + - name: ci-pull-credentials + secret: + secretName: ci-pull-credentials + - name: manifest-tool-local-pusher + secret: + secretName: manifest-tool-local-pusher + - name: pull-secret + secret: + secretName: registry-pull-credentials + - name: result-aggregator + secret: + secretName: result-aggregator - agent: kubernetes cluster: build03 cron: 0 4 * * * diff --git a/ci-operator/jobs/openshift/cluster-ingress-operator/openshift-cluster-ingress-operator-master-presubmits.yaml b/ci-operator/jobs/openshift/cluster-ingress-operator/openshift-cluster-ingress-operator-master-presubmits.yaml index 8cd47833d158f..dcb442a05523d 100644 --- a/ci-operator/jobs/openshift/cluster-ingress-operator/openshift-cluster-ingress-operator-master-presubmits.yaml +++ b/ci-operator/jobs/openshift/cluster-ingress-operator/openshift-cluster-ingress-operator-master-presubmits.yaml @@ -1,5 +1,89 @@ presubmits: openshift/cluster-ingress-operator: + - agent: kubernetes + always_run: false + branches: + - ^master$ + - ^master- + cluster: build03 + context: ci/prow/address-review-comments + decorate: true + decoration_config: + sparse_checkout_files: + - .ci-operator.yaml + - Dockerfile + labels: + ci.openshift.io/generator: prowgen + pj-rehearse.openshift.io/can-be-rehearsed: "true" + name: pull-ci-openshift-cluster-ingress-operator-master-address-review-comments + optional: true + rerun_command: /test address-review-comments + skip_if_only_changed: .* + spec: + containers: + - args: + - --gcs-upload-secret=/secrets/gcs/service-account.json + - --image-import-pull-secret=/etc/pull-secret/.dockerconfigjson + - --lease-server-credentials-file=/etc/boskos/credentials + - --report-credentials-file=/etc/report/credentials + - --secret-dir=/secrets/ci-pull-credentials + - --target=address-review-comments + command: + - ci-operator + env: + - name: HTTP_SERVER_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + image: quay-proxy.ci.openshift.org/openshift/ci:ci_ci-operator_latest + imagePullPolicy: Always + name: "" + ports: + - containerPort: 8080 + name: http + resources: + requests: + cpu: 10m + volumeMounts: + - mountPath: /etc/boskos + name: boskos + readOnly: true + - mountPath: /secrets/ci-pull-credentials + name: ci-pull-credentials + readOnly: true + - mountPath: /secrets/gcs + name: gcs-credentials + readOnly: true + - mountPath: /secrets/manifest-tool + name: manifest-tool-local-pusher + readOnly: true + - mountPath: /etc/pull-secret + name: pull-secret + readOnly: true + - mountPath: /etc/report + name: result-aggregator + readOnly: true + serviceAccountName: ci-operator + volumes: + - name: boskos + secret: + items: + - key: credentials + path: credentials + secretName: boskos-credentials + - name: ci-pull-credentials + secret: + secretName: ci-pull-credentials + - name: manifest-tool-local-pusher + secret: + secretName: manifest-tool-local-pusher + - name: pull-secret + secret: + secretName: registry-pull-credentials + - name: result-aggregator + secret: + secretName: result-aggregator + trigger: (?m)^/test( | .* )address-review-comments,?($|\s.*) - agent: kubernetes always_run: false annotations: diff --git a/ci-operator/step-registry/ingress/jira-agent/OWNERS b/ci-operator/step-registry/ingress/jira-agent/OWNERS new file mode 100644 index 0000000000000..b1730e9478f2c --- /dev/null +++ b/ci-operator/step-registry/ingress/jira-agent/OWNERS @@ -0,0 +1,32 @@ +approvers: +- alebedev87 +- aswinsuryan +- bentito +- candita +- davidesalerno +- frobware +- gcs278 +- grzpiotrowski +- jcmoraisjr +- knobunc +- miciah +- miheer +- rfredette +- rikatz +- thealisyed +reviewers: +- alebedev87 +- aswinsuryan +- bentito +- candita +- davidesalerno +- frobware +- gcs278 +- grzpiotrowski +- jcmoraisjr +- knobunc +- miciah +- miheer +- rfredette +- rikatz +- thealisyed diff --git a/ci-operator/step-registry/ingress/jira-agent/ingress-jira-agent-workflow.metadata.json b/ci-operator/step-registry/ingress/jira-agent/ingress-jira-agent-workflow.metadata.json new file mode 100644 index 0000000000000..27b56dde16bab --- /dev/null +++ b/ci-operator/step-registry/ingress/jira-agent/ingress-jira-agent-workflow.metadata.json @@ -0,0 +1,39 @@ +{ + "path": "ingress/jira-agent/ingress-jira-agent-workflow.yaml", + "owners": { + "approvers": [ + "alebedev87", + "aswinsuryan", + "bentito", + "candita", + "davidesalerno", + "frobware", + "gcs278", + "grzpiotrowski", + "jcmoraisjr", + "knobunc", + "miciah", + "miheer", + "rfredette", + "rikatz", + "thealisyed" + ], + "reviewers": [ + "alebedev87", + "aswinsuryan", + "bentito", + "candita", + "davidesalerno", + "frobware", + "gcs278", + "grzpiotrowski", + "jcmoraisjr", + "knobunc", + "miciah", + "miheer", + "rfredette", + "rikatz", + "thealisyed" + ] + } +} \ No newline at end of file diff --git a/ci-operator/step-registry/ingress/jira-agent/ingress-jira-agent-workflow.yaml b/ci-operator/step-registry/ingress/jira-agent/ingress-jira-agent-workflow.yaml new file mode 100644 index 0000000000000..1d6001f0f07e7 --- /dev/null +++ b/ci-operator/step-registry/ingress/jira-agent/ingress-jira-agent-workflow.yaml @@ -0,0 +1,30 @@ +workflow: + as: ingress-jira-agent + steps: + pre: + - ref: jira-agent-setup + - ref: jira-agent-github-app-auth + - ref: jira-agent-slack-pr-notify + - ref: jira-agent-claude-helpers + - ref: jira-agent-jira-helpers + - ref: jira-agent-git-helpers + test: + - ref: jira-agent-process + post: + - ref: jira-agent-report + env: + JIRA_AGENT_DEFAULT_BRANCH: "master" + JIRA_AGENT_AUTH_MODE: "pat" + JIRA_AGENT_FORK_ORG: "jira-solve-bot" + JIRA_AGENT_UPSTREAM_REPO: "openshift/cluster-ingress-operator" + JIRA_AGENT_JQL: '(project = NE OR (project = OCPBUGS AND component = "Networking / router")) AND resolution = Unresolved AND status in (New, "To Do") AND labels = issue-for-agent AND labels != agent-processed' + JIRA_AGENT_TARGET_STATUS: '{"OCPBUGS":"ASSIGNED","NE":"ASSIGNED"}' + JIRA_AGENT_TOOL_SETUP_SCRIPT: "GOFLAGS='' go install golang.org/x/tools/gopls@v0.21.0" + JIRA_AGENT_REVIEW_LANGUAGE: "go" + JIRA_AGENT_SLACK_EMOJI: ":robot:" + documentation: |- + Ingress operator-specific wrapper for the generic Jira Agent workflow. + Uses PAT auth mode — auto-forks openshift/cluster-ingress-operator + into jira-solve-bot and creates PRs against the upstream repo. + + Credentials: Uses hypershift-team-claude-prow (shared secret with gh-pat). diff --git a/ci-operator/step-registry/ingress/review-agent/OWNERS b/ci-operator/step-registry/ingress/review-agent/OWNERS new file mode 100644 index 0000000000000..b1730e9478f2c --- /dev/null +++ b/ci-operator/step-registry/ingress/review-agent/OWNERS @@ -0,0 +1,32 @@ +approvers: +- alebedev87 +- aswinsuryan +- bentito +- candita +- davidesalerno +- frobware +- gcs278 +- grzpiotrowski +- jcmoraisjr +- knobunc +- miciah +- miheer +- rfredette +- rikatz +- thealisyed +reviewers: +- alebedev87 +- aswinsuryan +- bentito +- candita +- davidesalerno +- frobware +- gcs278 +- grzpiotrowski +- jcmoraisjr +- knobunc +- miciah +- miheer +- rfredette +- rikatz +- thealisyed diff --git a/ci-operator/step-registry/ingress/review-agent/ingress-review-agent-workflow.metadata.json b/ci-operator/step-registry/ingress/review-agent/ingress-review-agent-workflow.metadata.json new file mode 100644 index 0000000000000..077b8b81a5ecf --- /dev/null +++ b/ci-operator/step-registry/ingress/review-agent/ingress-review-agent-workflow.metadata.json @@ -0,0 +1,39 @@ +{ + "path": "ingress/review-agent/ingress-review-agent-workflow.yaml", + "owners": { + "approvers": [ + "alebedev87", + "aswinsuryan", + "bentito", + "candita", + "davidesalerno", + "frobware", + "gcs278", + "grzpiotrowski", + "jcmoraisjr", + "knobunc", + "miciah", + "miheer", + "rfredette", + "rikatz", + "thealisyed" + ], + "reviewers": [ + "alebedev87", + "aswinsuryan", + "bentito", + "candita", + "davidesalerno", + "frobware", + "gcs278", + "grzpiotrowski", + "jcmoraisjr", + "knobunc", + "miciah", + "miheer", + "rfredette", + "rikatz", + "thealisyed" + ] + } +} \ No newline at end of file diff --git a/ci-operator/step-registry/ingress/review-agent/ingress-review-agent-workflow.yaml b/ci-operator/step-registry/ingress/review-agent/ingress-review-agent-workflow.yaml new file mode 100644 index 0000000000000..f3b8e1dfa2cb4 --- /dev/null +++ b/ci-operator/step-registry/ingress/review-agent/ingress-review-agent-workflow.yaml @@ -0,0 +1,19 @@ +workflow: + as: ingress-review-agent + steps: + pre: + - ref: review-agent-setup + test: + - ref: review-agent-process + post: + - ref: review-agent-report + env: + REVIEW_AGENT_AUTH_MODE: "pat" + REVIEW_AGENT_FORK_ORG: "jira-solve-bot" + REVIEW_AGENT_UPSTREAM_REPO: "openshift/cluster-ingress-operator" + documentation: |- + Ingress operator-specific wrapper for the generic review-agent workflow. + Uses PAT auth mode — auto-forks openshift/cluster-ingress-operator + into jira-solve-bot for push operations. + + Credentials: Uses hypershift-team-claude-prow (shared secret with gh-pat). diff --git a/ci-operator/step-registry/ingress/review-agent/trigger/OWNERS b/ci-operator/step-registry/ingress/review-agent/trigger/OWNERS new file mode 100644 index 0000000000000..b1730e9478f2c --- /dev/null +++ b/ci-operator/step-registry/ingress/review-agent/trigger/OWNERS @@ -0,0 +1,32 @@ +approvers: +- alebedev87 +- aswinsuryan +- bentito +- candita +- davidesalerno +- frobware +- gcs278 +- grzpiotrowski +- jcmoraisjr +- knobunc +- miciah +- miheer +- rfredette +- rikatz +- thealisyed +reviewers: +- alebedev87 +- aswinsuryan +- bentito +- candita +- davidesalerno +- frobware +- gcs278 +- grzpiotrowski +- jcmoraisjr +- knobunc +- miciah +- miheer +- rfredette +- rikatz +- thealisyed diff --git a/ci-operator/step-registry/ingress/review-agent/trigger/ingress-review-agent-trigger-workflow.metadata.json b/ci-operator/step-registry/ingress/review-agent/trigger/ingress-review-agent-trigger-workflow.metadata.json new file mode 100644 index 0000000000000..92145e920e9be --- /dev/null +++ b/ci-operator/step-registry/ingress/review-agent/trigger/ingress-review-agent-trigger-workflow.metadata.json @@ -0,0 +1,39 @@ +{ + "path": "ingress/review-agent/trigger/ingress-review-agent-trigger-workflow.yaml", + "owners": { + "approvers": [ + "alebedev87", + "aswinsuryan", + "bentito", + "candita", + "davidesalerno", + "frobware", + "gcs278", + "grzpiotrowski", + "jcmoraisjr", + "knobunc", + "miciah", + "miheer", + "rfredette", + "rikatz", + "thealisyed" + ], + "reviewers": [ + "alebedev87", + "aswinsuryan", + "bentito", + "candita", + "davidesalerno", + "frobware", + "gcs278", + "grzpiotrowski", + "jcmoraisjr", + "knobunc", + "miciah", + "miheer", + "rfredette", + "rikatz", + "thealisyed" + ] + } +} \ No newline at end of file diff --git a/ci-operator/step-registry/ingress/review-agent/trigger/ingress-review-agent-trigger-workflow.yaml b/ci-operator/step-registry/ingress/review-agent/trigger/ingress-review-agent-trigger-workflow.yaml new file mode 100644 index 0000000000000..a0b4c4540ead6 --- /dev/null +++ b/ci-operator/step-registry/ingress/review-agent/trigger/ingress-review-agent-trigger-workflow.yaml @@ -0,0 +1,12 @@ +workflow: + as: ingress-review-agent-trigger + steps: + test: + - ref: review-agent-trigger + env: + PERIODIC_JOB_NAME: "periodic-ci-openshift-cluster-ingress-operator-master-periodic-review-agent" + REVIEW_AGENT_UPSTREAM_REPO: "openshift/cluster-ingress-operator" + documentation: |- + Trigger a periodic review-agent run via Gangway API. + Used by the address-review-comments presubmit job to re-run review-agent + on demand when a pull request receives review comments that should be addressed.