44d6ba9c8d
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
41 lines
2.0 KiB
YAML
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.
|