Files
repo-worker 44d6ba9c8d
ci/woodpecker/tag/build-amd64 Pipeline failed
ci/woodpecker/tag/build-arm64 Pipeline was successful
ci/woodpecker/tag/manifest Pipeline failed
ci/woodpecker/cron/drift Pipeline was successful
Fix image_name inference bug + add tag normalization setting (oleks/ci-scripts#21, #22)
render_thin_quartet.py's kind=matrix rendering derived image_name from the
manifest's repo field, which silently diverges from the actually-published
image for xonsh-image (repo "xonsh-image" vs. live image "oleks/xonsh",
confirmed via the package registry). image_name is now a required, explicit
manifest field with no inference; xonsh-image and csi-s3 manifests updated
with their verified values.

entrypoint.sh's buildx-build/buildx-manifest flows always used the raw
CI_COMMIT_TAG, with no way to reproduce ci/local.sh's leading-"v" /
trailing-"-N" tag stripping. Added resolve_version() with two additive,
default-preserving settings: `version` (explicit override, wins over
CI_COMMIT_TAG when set — a no-op today since nothing sets it) and
`tag_strip_v` (opt-in normalization). Default behavior is unchanged: raw
CI_COMMIT_TAG, matching this plugin's own v1.0.x self-build tags and every
other current consumer.

xonsh-image's manifest now opts into tag_strip_v to prove the fix (verified:
resolve_version("v0.22.7") -> "0.22.7", rendered tag "0.22.7-amd64" matches
the live-consumed scheme) but is NOT wired into its actual .woodpecker/ dir
yet — migration is a separate step once both fixes are released.

oleks/ci-scripts#20
2026-07-09 19:47:31 +03:00

41 lines
2.0 KiB
YAML

repo: csi-s3
kind: matrix
explicit_clone: true
image: git.oleks.space/oleks/nix-ci:latest
script: ci/local.sh
# oleks/ci-scripts#22: matches ci/local.sh's IMAGE_REPO default
# ("csi-s3-driver"), NOT the `repo:` field above. Unlike xonsh-image there is
# no live package under this name yet to cross-check (csi-s3's --publish path
# has never run in CI: no pipeline history, no registry package) — this is
# the intended target per the script, not a confirmed-live value. csi-s3
# remains EXCLUDED from the #17 migration regardless (oleks/ci-scripts#20:
# too bespoke — build-args, dual per-arch tags, skip-if-published, dropped
# clone/timeout overrides); this field is added for manifest correctness only.
image_name: git.oleks.space/oleks/csi-s3-driver
var_name: TARGET_ARCH
arches: [amd64, arm64]
commented_arches:
- "s390x # disabled: no s390x builder available"
buildkit_prefix: buildkit-rootless
fixed_label: amd64
timeout: 240
node_selector:
kubernetes.io/hostname: howard2404
manifest_arches_env: "amd64 arm64"
manifest_buildkit_addr: "tcp://buildkit-amd64.infra.svc.cluster.local:1234"
build_header: |
# Thin wrapper (cluster #196 / emmett#44): CI runs the SAME ci/local.sh a
# developer runs, so CI and local can't drift. csi-s3 keeps its Dockerfile
# (s3fs-fuse from Alpine edge + a fetched geesefs binary are not cleanly
# Nix-expressible), so this is the keep-Dockerfile escape hatch, not a
# parity-lib conversion. The only CI-specific bits are env overrides:
# BUILDKIT_ADDR -> the in-cluster native-arch remote buildkit
# PUBLISH=1 -> actually push (local default is dry-run)
# Each native-arch node builds + pushes its own per-arch tags; the manifest
# workflow then combines them.
manifest_header: |
# Thin wrapper (cluster #196 / emmett#44): the SAME ci/local.sh combines the
# per-arch tags into the multi-arch manifest. MANIFEST_ARCHES tracks which
# per-arch tags exist; re-add s390x here and in build.yaml when a builder
# returns.