build-cran-binaries/.crow
Repository files (latest commit first)
Filename Latest commit message Latest commit date
pat-s 4406a8735b refactor(ci): consolidate per-platform crow workflows into 3 matrix files (#92)
## Summary

Collapse **44** per-platform crow pipeline files into **3** matrix-driven files (one per family), using `matrix.include` + the crow #1165 declarative manual `variables:` block:

| Family | Before | After |
|---|---|---|
| process-updates | 14 | `process-updates.yaml` |
| weekly-audit-missing | 16 | `weekly-audit-missing.yaml` |
| weekly-rebuild-missing | 14 | `weekly-rebuild-missing.yaml` |

- **One file per family** (not split by arch). Arch placement is via the agent label as a matrix var (`artemis`=amd64, `gaia`=arm64) for process-updates and weekly-rebuild; weekly-audit keeps its arch-`nodeSelector` placement (no agent label).
- **Matrix axis is named `OS`** (e.g. `redhat-9`) per request, with per-row `R_VERSION`, image tag, codename, and `process_new` (FALSE for alpine).
- **Runs preserved 1:1:**
  - *Cron*: each existing `<family>-<os>-<arch>` cron still fires only its matching matrix row via `CI_PIPELINE_CRON`. Server-side cron entries unchanged.
  - *Manual*: a #1165 dropdown variable (`process_cran_updates` / `weekly_audit_missing` / `weekly_rebuild_missing`) selects a single `<os>-<arch>` or `all`. weekly-rebuild defaults to `all`, matching its former bare `event: manual` trigger.

## Behavior deltas (intentional, flagged)

To fit one file per family the backend was unified:
- The amd64-only `node.kubernetes.io/instance-type: AX42` nodeSelector pin is **dropped**; placement now relies on the `artemis`/`gaia` agents.
- **process-updates arm64** jobs now share the same `backend_options` as amd64 (resource requests/limits + tolerations) — they previously had none, so they gain an 18Gi memory limit. Tell me if arm64 should stay uncapped.

## Validation required before merge

Relies on crow interpolating matrix variables inside `when.evaluate`, `labels.agent`, and `commands`. Interpolation in image/env/commands is standard crow; the novel bit is `when.evaluate`. The manual dropdown routing exercises the same interpolation as the cron routing, so on this branch:
1. Trigger manually with the dropdown = `redhat-9-amd64` -> confirm only that one job runs (image `build-env-redhat:9`, R 4.4.3, agent artemis).
2. Trigger with `all` -> confirm all os/arch jobs schedule.

Crons only fire on the default branch, so no collision while unmerged. Fallback if `${...}` doesn't interpolate in `when`: a runtime `case "$CI_PIPELINE_CRON" in ...` guard, same files otherwise.

Reviewed-on: #92
2026-06-16 09:33:06 +00:00
..
archive-missed-packages.yaml feat(build): skip already-built package versions on workflow restart (#91) 2026-06-16 07:27:20 +00:00
build-all-versions-amd64.yaml feat(build): skip already-built package versions on workflow restart (#91) 2026-06-16 07:27:20 +00:00
build-all-versions-arm64.yaml feat(build): skip already-built package versions on workflow restart (#91) 2026-06-16 07:27:20 +00:00
build-all-versions-install-deps-amd64.yaml feat: R-minor-sensitive binary builds (full + iterative) (#84) 2026-06-14 08:04:40 +00:00
build-all-versions-install-deps-arm64.yaml feat: R-minor-sensitive binary builds (full + iterative) (#84) 2026-06-14 08:04:40 +00:00
process-updates.yaml refactor(ci): consolidate per-platform crow workflows into 3 matrix files (#92) 2026-06-16 09:33:06 +00:00
weekly-audit-missing.yaml refactor(ci): consolidate per-platform crow workflows into 3 matrix files (#92) 2026-06-16 09:33:06 +00:00
weekly-rebuild-missing.yaml refactor(ci): consolidate per-platform crow workflows into 3 matrix files (#92) 2026-06-16 09:33:06 +00:00