refactor(ci): consolidate build-all-versions workflows into 2 files #93

Merged
pat-s merged 3 commits from refactor/consolidate-build-all into main 2026-06-16 09:33:14 +00:00
Owner

Summary

Consolidate the four build-all-versions* files into two, mirroring the matrix approach used for the process-updates / weekly families:

Before After
build-all-versions-amd64.yaml + build-all-versions-arm64.yaml build-all-versions.yaml
build-all-versions-install-deps-amd64.yaml + -arm64.yaml build-all-versions-install-deps.yaml

ARCH becomes a matrix axis carrying the per-arch differences: agent (artemis/gaia), BACKEND (kubernetes/docker), and R_PKG_CACHE_DIR. Build-all keeps its SPLIT_INDEX parallelism, so its matrix is ARCH x SPLIT = 8 rows; only the rows matching the selected arch run.

Invocation unchanged. Routing uses the existing task selector task == "build-all-${ARCH}", so --var task=build-all-amd64 ... still runs exactly the amd64 rows. OS / OS_VERSION / R_VERSION / K8S_INSTANCE_TYPE are still passed via --var. (You can drop --var ARCH=... now — arch comes from the matrix/task.)

No cron. These pipelines are manual-only, so there are no scheduled runs to affect.

Validation before merge

Same matrix-interpolation-in-when/labels mechanism validated for #92, plus it now relies on per-row agent/BACKEND selecting the right execution backend (kubernetes for amd64, docker for arm64). Before merge, on this branch trigger a small task=build-all-arm64 run and confirm it lands on the gaia/docker backend (and amd64 on artemis/kubernetes). Originals are in git history for rollback.

Note: archive-missed-packages.yaml was already a single consolidated matrix file (cron + manual) and is left untouched.

## Summary Consolidate the four `build-all-versions*` files into two, mirroring the matrix approach used for the process-updates / weekly families: | Before | After | |---|---| | `build-all-versions-amd64.yaml` + `build-all-versions-arm64.yaml` | `build-all-versions.yaml` | | `build-all-versions-install-deps-amd64.yaml` + `-arm64.yaml` | `build-all-versions-install-deps.yaml` | `ARCH` becomes a matrix axis carrying the per-arch differences: `agent` (artemis/gaia), `BACKEND` (kubernetes/docker), and `R_PKG_CACHE_DIR`. Build-all keeps its `SPLIT_INDEX` parallelism, so its matrix is ARCH x SPLIT = 8 rows; only the rows matching the selected arch run. **Invocation unchanged.** Routing uses the existing task selector `task == "build-all-${ARCH}"`, so `--var task=build-all-amd64 ...` still runs exactly the amd64 rows. `OS` / `OS_VERSION` / `R_VERSION` / `K8S_INSTANCE_TYPE` are still passed via `--var`. (You can drop `--var ARCH=...` now — arch comes from the matrix/task.) **No cron.** These pipelines are manual-only, so there are no scheduled runs to affect. ## Validation before merge Same matrix-interpolation-in-`when`/`labels` mechanism validated for #92, plus it now relies on per-row `agent`/`BACKEND` selecting the right execution backend (kubernetes for amd64, docker for arm64). Before merge, on this branch trigger a small `task=build-all-arm64` run and confirm it lands on the gaia/docker backend (and amd64 on artemis/kubernetes). Originals are in git history for rollback. Note: `archive-missed-packages.yaml` was already a single consolidated matrix file (cron + manual) and is left untouched.
Merge the per-arch build-all and install-deps files into one each:
  build-all-versions-{amd64,arm64}.yaml             -> build-all-versions.yaml
  build-all-versions-install-deps-{amd64,arch}.yaml -> build-all-versions-install-deps.yaml

Arch becomes a matrix axis carrying the per-arch agent (artemis/gaia),
BACKEND (kubernetes/docker) and R_PKG_CACHE_DIR. Routing is unchanged: the
existing `task == "build-all-${ARCH}"` selector means
`--var task=build-all-amd64` still runs only the amd64 rows. OS / OS_VERSION /
R_VERSION / K8S_INSTANCE_TYPE are still passed via --var. These pipelines are
manual-only (no cron).
The consolidated build-all routed on `task ==`, which crow #1165 filters out
of the manual-run form, leaving "no configurable variables". Declare
target_arch (routes the matrix) plus OS / OS_VERSION / R_VERSION /
K8S_INSTANCE_TYPE as variables, and route on `target_arch == "${ARCH}"` so the
form is populated and arch selection works from the UI. CLI callers now pass
`--var target_arch=amd64` instead of `--var task=build-all-amd64`.
Placement is handled by the agent label (artemis/gaia) and only the docker
backend is used, so the kubernetes backend_options blocks, the arch/instance
nodeSelector, and the K8S_INSTANCE_TYPE variable are dead. Remove them and the
now-redundant BACKEND matrix column.
pat-s merged commit b297f0fbc0 into main 2026-06-16 09:33:14 +00:00
pat-s deleted branch refactor/consolidate-build-all 2026-06-16 09:33:14 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
devxy/build-cran-binaries!93
No description provided.