From 697d58a86cd25f3533844b87aaf947e72202499b Mon Sep 17 00:00:00 2001 From: Alec Henninger Date: Thu, 16 Jul 2026 16:32:17 -0400 Subject: [PATCH 1/2] fleetshift: add periodic multiarch mirror for Dockerfile.fleetshift Introduce a dedicated fleetshift variant that builds and republishes quay.io/stolostron/fleetshift:latest on a staggered cron with retries, without changing existing main PR or postsubmit jobs. Co-authored-by: Cursor --- ...shift-fleetshift-poc-main__fleetshift.yaml | 38 +++++++++ ...etshift-fleetshift-poc-main-periodics.yaml | 80 +++++++++++++++++++ ...tshift-fleetshift-poc-main-presubmits.yaml | 60 ++++++++++++++ 3 files changed, 178 insertions(+) create mode 100644 ci-operator/config/fleetshift/fleetshift-poc/fleetshift-fleetshift-poc-main__fleetshift.yaml diff --git a/ci-operator/config/fleetshift/fleetshift-poc/fleetshift-fleetshift-poc-main__fleetshift.yaml b/ci-operator/config/fleetshift/fleetshift-poc/fleetshift-fleetshift-poc-main__fleetshift.yaml new file mode 100644 index 0000000000000..aba2dd7542139 --- /dev/null +++ b/ci-operator/config/fleetshift/fleetshift-poc/fleetshift-fleetshift-poc-main__fleetshift.yaml @@ -0,0 +1,38 @@ +build_root: + image_stream_tag: + name: builder + namespace: stolostron + tag: go1.25-linux +images: + items: + - additional_architectures: + - arm64 + dockerfile_path: Dockerfile.fleetshift + optional: true + to: fleetshift +resources: + '*': + requests: + cpu: 100m + memory: 200Mi +tests: +- as: republish-latest + capabilities: + - arm64 + cron: 30 4,10,16,22 * * * + retry: + attempts: 3 + interval: 1h + steps: + dependencies: + SOURCE_IMAGE_REF: fleetshift + env: + IMAGE_REPO: fleetshift + IMAGE_TAG: latest + REGISTRY_ORG: stolostron + workflow: fleetshift-ci-image-mirror +zz_generated_metadata: + branch: main + org: fleetshift + repo: fleetshift-poc + variant: fleetshift diff --git a/ci-operator/jobs/fleetshift/fleetshift-poc/fleetshift-fleetshift-poc-main-periodics.yaml b/ci-operator/jobs/fleetshift/fleetshift-poc/fleetshift-fleetshift-poc-main-periodics.yaml index 4daac759fb998..c790a940a5b56 100644 --- a/ci-operator/jobs/fleetshift/fleetshift-poc/fleetshift-fleetshift-poc-main-periodics.yaml +++ b/ci-operator/jobs/fleetshift/fleetshift-poc/fleetshift-fleetshift-poc-main-periodics.yaml @@ -1,4 +1,84 @@ periodics: +- agent: kubernetes + cluster: build01 + cron: 30 4,10,16,22 * * * + decorate: true + decoration_config: + sparse_checkout_files: + - Dockerfile.fleetshift + extra_refs: + - base_ref: main + org: fleetshift + repo: fleetshift-poc + sparse_checkout_files: + - Dockerfile.fleetshift + labels: + capability/arm64: arm64 + ci-operator.openshift.io/variant: fleetshift + ci.openshift.io/generator: prowgen + pj-rehearse.openshift.io/can-be-rehearsed: "true" + name: periodic-ci-fleetshift-fleetshift-poc-main-fleetshift-republish-latest + retry: + attempts: 3 + interval: 1h + 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 + - --target=republish-latest + - --variant=fleetshift + 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/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: 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: build01 cron: 30 2,8,14,20 * * * diff --git a/ci-operator/jobs/fleetshift/fleetshift-poc/fleetshift-fleetshift-poc-main-presubmits.yaml b/ci-operator/jobs/fleetshift/fleetshift-poc/fleetshift-fleetshift-poc-main-presubmits.yaml index 58e6b9962dd3b..f2ef4862fca7d 100644 --- a/ci-operator/jobs/fleetshift/fleetshift-poc/fleetshift-fleetshift-poc-main-presubmits.yaml +++ b/ci-operator/jobs/fleetshift/fleetshift-poc/fleetshift-fleetshift-poc-main-presubmits.yaml @@ -1,5 +1,65 @@ presubmits: fleetshift/fleetshift-poc: + - agent: kubernetes + always_run: true + branches: + - ^main$ + - ^main- + cluster: build03 + context: ci/prow/fleetshift-images + decorate: true + decoration_config: + sparse_checkout_files: + - Dockerfile.fleetshift + labels: + capability/arm64: arm64 + ci-operator.openshift.io/variant: fleetshift + ci.openshift.io/generator: prowgen + pj-rehearse.openshift.io/can-be-rehearsed: "true" + name: pull-ci-fleetshift-fleetshift-poc-main-fleetshift-images + optional: true + rerun_command: /test fleetshift-images + spec: + containers: + - args: + - --gcs-upload-secret=/secrets/gcs/service-account.json + - --image-import-pull-secret=/etc/pull-secret/.dockerconfigjson + - --report-credentials-file=/etc/report/credentials + - --target=[images] + - --variant=fleetshift + command: + - ci-operator + image: quay-proxy.ci.openshift.org/openshift/ci:ci_ci-operator_latest + imagePullPolicy: Always + name: "" + resources: + requests: + cpu: 10m + volumeMounts: + - 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: 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( | .* )fleetshift-images,?($|\s.*) - agent: kubernetes always_run: true branches: From 680730e3cf22e3e9db6b28079aecb11733a8f840 Mon Sep 17 00:00:00 2001 From: Alec Henninger Date: Fri, 17 Jul 2026 10:03:42 -0400 Subject: [PATCH 2/2] fleetshift: only run fleetshift-images when Dockerfile.fleetshift changes Replace image-level optional with images.run_if_changed so the variant images job does not schedule on every PR. Co-authored-by: Cursor --- .../fleetshift-fleetshift-poc-main__fleetshift.yaml | 2 +- .../fleetshift-fleetshift-poc-main-presubmits.yaml | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ci-operator/config/fleetshift/fleetshift-poc/fleetshift-fleetshift-poc-main__fleetshift.yaml b/ci-operator/config/fleetshift/fleetshift-poc/fleetshift-fleetshift-poc-main__fleetshift.yaml index aba2dd7542139..51d282ac27b4b 100644 --- a/ci-operator/config/fleetshift/fleetshift-poc/fleetshift-fleetshift-poc-main__fleetshift.yaml +++ b/ci-operator/config/fleetshift/fleetshift-poc/fleetshift-fleetshift-poc-main__fleetshift.yaml @@ -8,8 +8,8 @@ images: - additional_architectures: - arm64 dockerfile_path: Dockerfile.fleetshift - optional: true to: fleetshift + run_if_changed: ^Dockerfile\.fleetshift$ resources: '*': requests: diff --git a/ci-operator/jobs/fleetshift/fleetshift-poc/fleetshift-fleetshift-poc-main-presubmits.yaml b/ci-operator/jobs/fleetshift/fleetshift-poc/fleetshift-fleetshift-poc-main-presubmits.yaml index f2ef4862fca7d..753685286f4d9 100644 --- a/ci-operator/jobs/fleetshift/fleetshift-poc/fleetshift-fleetshift-poc-main-presubmits.yaml +++ b/ci-operator/jobs/fleetshift/fleetshift-poc/fleetshift-fleetshift-poc-main-presubmits.yaml @@ -1,7 +1,7 @@ presubmits: fleetshift/fleetshift-poc: - agent: kubernetes - always_run: true + always_run: false branches: - ^main$ - ^main- @@ -17,8 +17,8 @@ presubmits: ci.openshift.io/generator: prowgen pj-rehearse.openshift.io/can-be-rehearsed: "true" name: pull-ci-fleetshift-fleetshift-poc-main-fleetshift-images - optional: true rerun_command: /test fleetshift-images + run_if_changed: ^Dockerfile\.fleetshift$ spec: containers: - args: