ci: add gated arm64 (.deb) leg to citus community nightlies#1198
Draft
ihalatci wants to merge 1 commit into
Draft
ci: add gated arm64 (.deb) leg to citus community nightlies#1198ihalatci wants to merge 1 commit into
ihalatci wants to merge 1 commit into
Conversation
Adds an optional arm64 build+publish leg to the community-nightlies workflow, gated behind the DEB_BUILD_MULTI_ARCH repo variable (default OFF, so the existing amd64 pipeline is byte-for-byte unchanged). This unblocks ARM64 Debian Citus Docker images (citusdata/citus#8612), which install Citus from the packagecloud citusdata/community(-nightlies) apt repos whose arm64 index is currently empty. - arm64 legs run on native ubuntu-24.04-arm runners; el/8 (RPM) excluded - builder (citus/packaging-test:<distro>-all) and signer (citusdata/packaging:debsigner) images are built natively in-job since only amd64 variants are published to Docker Hub today; docker run has no --platform and prefers local images, so citus_package uses them - no changes to the amd64 path, shared scripts, or the build engine Deb-only; arm64 release legs, published multi-arch images, and RPM arm64 parity are follow-ups. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What & why
Track 2 of ARM64 support for Citus (citusdata/citus#8612). The Debian-based Citus Docker images install Citus via
apt-get install ... =<pinned-version>from the packagecloudcitusdata/community(-nightlies)apt repos. Those repos' arm64 index is currently empty (0 packages), so the Debian images cannot build forlinux/arm64. This PR starts publishing arm64.debs by adding a gated arm64 leg to the community-nightlies workflow.Sibling/coordination PR (Track 1, docker multi-arch rails): citusdata/tools#414 — same gated-OFF-by-default pattern.
The change (1 file, +25/−1, purely additive)
.github/workflows/build-citus-community-nightlies.yml:archmatrix dimension, default OFF:arch: ${{ fromJSON(vars.DEB_BUILD_MULTI_ARCH == 'true' && '["amd64", "arm64"]' || '["amd64"]') }}.When
DEB_BUILD_MULTI_ARCHis unset/false⇒["amd64"]only ⇒ the existing amd64 nightly is unchanged.runs-on: ${{ matrix.arch == 'arm64' && 'ubuntu-24.04-arm' || 'ubuntu-latest' }}— arm64 legs run on native ARM64 GitHub-hosted runners.exclude: {platform: el/8, arch: arm64}—el/8is an RPM target; arm64 RPM parity is out of scope here.if: matrix.arch == 'arm64'steps (before Build packages) that build the arm64 builder (citus/packaging-test:<distro>-all) and signer (citusdata/packaging:debsigner) images natively in-job, because only amd64 variants of those images are published to Docker Hub today. The build engine'sdocker runhas no--platformflag and prefers a local image, socitus_packagepicks up these native arm64 images automatically; amd64 keeps pulling from Docker Hub.No changes to the amd64 path, shared scripts (
update_image,ci/push_images), the deb entrypoint, the upload script, or thecitusdata/toolsbuild engine. Version strings are identical by construction (samepkgvars+ same engine), satisfying the Docker images' exact-version pins.Safety / gating
DEB_BUILD_MULTI_ARCHrepo variable set totrue, this is a no-op for the existing pipeline.upload_to_package_cloudonly publishes when the current branch == the workflow'smain_branch, so this feature branch never publishes.actionlint(clean) and a YAML parse.Scope
citusnightlies →citusdata/community-nightliesacross debianbullseye/bookworm/trixieand ubuntujammy/noble(PG majors fan out inside each-allbuild).Follow-ups (not in this PR)
all-citus/debian-hll/debian-topn(build-package.yml,--build_type release→citusdata/community) — on the critical path for the release Docker images (latest,postgres-16/17/18); also needs the release path's amd64-jqhardcode made arch-aware.Open questions
ubuntu-24.04-armrunners are enabled for the citusdata org (assumed GA/free for public repos).-allbuilder image is rebuilt each run (cmake + pyenv compile, native arm64) until multi-arch images are published.🚧 Draft — awaiting operator review. Do not merge / mark ready yet.