From 4c67703f5290b55a707f5186a91c5eac1edd7574 Mon Sep 17 00:00:00 2001 From: pat-s Date: Wed, 17 Jun 2026 16:26:04 +0000 Subject: [PATCH] refactor(ci): route workflows by agent group label instead of named agent (#94) ## Summary - Switch crow workflow placement from a per-agent label (`agent: ${AGENT}`) to a group label (`group: rpkgs-${ARCH}`), so jobs target the `rpkgs-amd64` / `rpkgs-arm64` agent pools instead of a single named agent (`artemis`/`gaia`). - Remove the now-unused `AGENT` matrix variable from all build/process/weekly workflows. - Update header comments to reflect group-based placement. Agents opt into a pool via `CROW_AGENT_LABELS="group=rpkgs-"`. The group name derives from each matrix row's `ARCH`, so adding or replacing agents no longer requires touching the workflow files. Reviewed-on: https://git.devxy.io/devxy/build-cran-binaries/pulls/94 --- .crow/build-all-versions-install-deps.yaml | 4 +--- .crow/build-all-versions.yaml | 12 ++---------- .crow/process-updates.yaml | 18 ++---------------- .crow/weekly-audit-missing.yaml | 20 ++------------------ .crow/weekly-rebuild-missing.yaml | 18 ++---------------- 5 files changed, 9 insertions(+), 63 deletions(-) diff --git a/.crow/build-all-versions-install-deps.yaml b/.crow/build-all-versions-install-deps.yaml index 11738ce..ad51300 100644 --- a/.crow/build-all-versions-install-deps.yaml +++ b/.crow/build-all-versions-install-deps.yaml @@ -30,14 +30,12 @@ skip_clone: true labels: platform: linux/${ARCH} - agent: ${AGENT} + group: rpkgs-${ARCH} matrix: include: - ARCH: amd64 - AGENT: artemis - ARCH: arm64 - AGENT: gaia steps: - name: 'Install deps and bincraft' diff --git a/.crow/build-all-versions.yaml b/.crow/build-all-versions.yaml index 479c8d6..639ce80 100644 --- a/.crow/build-all-versions.yaml +++ b/.crow/build-all-versions.yaml @@ -1,7 +1,7 @@ ### Manual full rebuild of all CRAN binaries for one OS/arch. # Set the variables below in the manual-run form (or via --var on the CLI). # `target_arch` routes the matrix; OS/OS_VERSION/R_VERSION select the platform -# image and cache volume. Placement is via the agent label (artemis/gaia). +# image and cache volume. Placement is via the group label (rpkgs-amd64/rpkgs-arm64). # Skip list lives in local/excluded-packages.json (read by local/build-all.R). variables: target_arch: @@ -31,47 +31,39 @@ skip_clone: true labels: platform: linux/${ARCH} - agent: ${AGENT} + group: rpkgs-${ARCH} matrix: include: - ARCH: amd64 - AGENT: artemis R_PKG_CACHE_DIR: '' SPLIT_INTO: 4 SPLIT_INDEX: 1 - ARCH: amd64 - AGENT: artemis R_PKG_CACHE_DIR: '' SPLIT_INTO: 4 SPLIT_INDEX: 2 - ARCH: amd64 - AGENT: artemis R_PKG_CACHE_DIR: '' SPLIT_INTO: 4 SPLIT_INDEX: 3 - ARCH: amd64 - AGENT: artemis R_PKG_CACHE_DIR: '' SPLIT_INTO: 4 SPLIT_INDEX: 4 - ARCH: arm64 - AGENT: gaia R_PKG_CACHE_DIR: /mnt/cache/pkgcache SPLIT_INTO: 4 SPLIT_INDEX: 1 - ARCH: arm64 - AGENT: gaia R_PKG_CACHE_DIR: /mnt/cache/pkgcache SPLIT_INTO: 4 SPLIT_INDEX: 2 - ARCH: arm64 - AGENT: gaia R_PKG_CACHE_DIR: /mnt/cache/pkgcache SPLIT_INTO: 4 SPLIT_INDEX: 3 - ARCH: arm64 - AGENT: gaia R_PKG_CACHE_DIR: /mnt/cache/pkgcache SPLIT_INTO: 4 SPLIT_INDEX: 4 diff --git a/.crow/process-updates.yaml b/.crow/process-updates.yaml index ee5b7cc..9d40c67 100644 --- a/.crow/process-updates.yaml +++ b/.crow/process-updates.yaml @@ -5,7 +5,7 @@ # its matching matrix row (via the per-row `cron:` name filter). # - manual: pick a target from the `process_cran_updates` dropdown # ("all" = every os/arch). -# Arch placement is handled by the agent label (artemis=amd64, gaia=arm64). +# Arch placement is handled by the group label (rpkgs-amd64, rpkgs-arm64). variables: process_cran_updates: description: "Manual run target: a specific -, or 'all' for every os/arch." @@ -36,104 +36,90 @@ when: skip_clone: true labels: - agent: ${AGENT} + group: rpkgs-${ARCH} matrix: include: - OS: alpine-322 ARCH: amd64 - AGENT: artemis R_VERSION: 4.5.3 IMG: alpine:3.24 OS_ID: alpine322 PROCESS_NEW: "FALSE" - OS: alpine-322 ARCH: arm64 - AGENT: gaia R_VERSION: 4.5.3 IMG: alpine:3.24 OS_ID: alpine322 PROCESS_NEW: "FALSE" - OS: alpine-323 ARCH: amd64 - AGENT: artemis R_VERSION: 4.5.3 IMG: alpine:3.24 OS_ID: alpine323 PROCESS_NEW: "FALSE" - OS: alpine-323 ARCH: arm64 - AGENT: gaia R_VERSION: 4.5.3 IMG: alpine:3.24 OS_ID: alpine323 PROCESS_NEW: "FALSE" - OS: redhat-8 ARCH: amd64 - AGENT: artemis R_VERSION: 4.4.3 IMG: redhat:8 OS_ID: rhel8 PROCESS_NEW: "TRUE" - OS: redhat-8 ARCH: arm64 - AGENT: gaia R_VERSION: 4.4.3 IMG: redhat:8 OS_ID: rhel8 PROCESS_NEW: "TRUE" - OS: redhat-9 ARCH: amd64 - AGENT: artemis R_VERSION: 4.4.3 IMG: redhat:9 OS_ID: rhel9 PROCESS_NEW: "TRUE" - OS: redhat-9 ARCH: arm64 - AGENT: gaia R_VERSION: 4.4.3 IMG: redhat:9 OS_ID: rhel9 PROCESS_NEW: "TRUE" - OS: redhat-10 ARCH: amd64 - AGENT: artemis R_VERSION: 4.5.3 IMG: redhat:10 OS_ID: rhel10 PROCESS_NEW: "TRUE" - OS: redhat-10 ARCH: arm64 - AGENT: gaia R_VERSION: 4.5.3 IMG: redhat:10 OS_ID: rhel10 PROCESS_NEW: "TRUE" - OS: ubuntu-2204 ARCH: amd64 - AGENT: artemis R_VERSION: 4.4.3 IMG: ubuntu:jammy OS_ID: jammy PROCESS_NEW: "TRUE" - OS: ubuntu-2204 ARCH: arm64 - AGENT: gaia R_VERSION: 4.4.3 IMG: ubuntu:jammy OS_ID: jammy PROCESS_NEW: "TRUE" - OS: ubuntu-2404 ARCH: amd64 - AGENT: artemis R_VERSION: 4.4.3 IMG: ubuntu:noble OS_ID: noble PROCESS_NEW: "TRUE" - OS: ubuntu-2404 ARCH: arm64 - AGENT: gaia R_VERSION: 4.4.3 IMG: ubuntu:noble OS_ID: noble diff --git a/.crow/weekly-audit-missing.yaml b/.crow/weekly-audit-missing.yaml index b10c108..6ff71e3 100644 --- a/.crow/weekly-audit-missing.yaml +++ b/.crow/weekly-audit-missing.yaml @@ -5,7 +5,7 @@ # its matching matrix row (via the per-row `cron:` name filter). # - manual: pick a target from the `weekly_audit_missing` dropdown # ("all" = every os/arch). -# Arch placement is via the agent label (artemis=amd64, gaia=arm64). +# Arch placement is via the group label (rpkgs-amd64, rpkgs-arm64). variables: weekly_audit_missing: description: "Manual run target: a specific -, or 'all' for every os/arch." @@ -38,88 +38,72 @@ when: skip_clone: true labels: - agent: ${AGENT} + group: rpkgs-${ARCH} matrix: include: - OS: alpine-321 ARCH: amd64 - AGENT: artemis R_VERSION: 4.5.3 IMG: alpine:3.24 - OS: alpine-321 ARCH: arm64 - AGENT: gaia R_VERSION: 4.5.3 IMG: alpine:3.24 - OS: alpine-322 ARCH: amd64 - AGENT: artemis R_VERSION: 4.5.3 IMG: alpine:3.24 - OS: alpine-322 ARCH: arm64 - AGENT: gaia R_VERSION: 4.5.3 IMG: alpine:3.24 - OS: alpine-323 ARCH: amd64 - AGENT: artemis R_VERSION: 4.5.3 IMG: alpine:3.24 - OS: alpine-323 ARCH: arm64 - AGENT: gaia R_VERSION: 4.5.3 IMG: alpine:3.24 - OS: redhat-8 ARCH: amd64 - AGENT: artemis R_VERSION: 4.4.3 IMG: redhat:8 - OS: redhat-8 ARCH: arm64 - AGENT: gaia R_VERSION: 4.4.3 IMG: redhat:8 - OS: redhat-9 ARCH: amd64 - AGENT: artemis R_VERSION: 4.4.3 IMG: redhat:9 - OS: redhat-9 ARCH: arm64 - AGENT: gaia R_VERSION: 4.4.3 IMG: redhat:9 - OS: redhat-10 ARCH: amd64 - AGENT: artemis R_VERSION: 4.5.3 IMG: redhat:10 - OS: redhat-10 ARCH: arm64 - AGENT: gaia R_VERSION: 4.5.3 IMG: redhat:10 - OS: ubuntu-2204 ARCH: amd64 - AGENT: artemis R_VERSION: 4.4.3 IMG: ubuntu:jammy - OS: ubuntu-2204 ARCH: arm64 - AGENT: gaia R_VERSION: 4.4.3 IMG: ubuntu:jammy - OS: ubuntu-2404 ARCH: amd64 - AGENT: artemis R_VERSION: 4.4.3 IMG: ubuntu:noble - OS: ubuntu-2404 ARCH: arm64 - AGENT: gaia R_VERSION: 4.4.3 IMG: ubuntu:noble diff --git a/.crow/weekly-rebuild-missing.yaml b/.crow/weekly-rebuild-missing.yaml index f6bf9e5..843429e 100644 --- a/.crow/weekly-rebuild-missing.yaml +++ b/.crow/weekly-rebuild-missing.yaml @@ -6,7 +6,7 @@ # - manual: `weekly_rebuild_missing` dropdown, default "all" (matches the # previous bare manual trigger that ran every os/arch); pick a # single - to run just one. -# Arch placement is handled by the agent label (artemis=amd64, gaia=arm64). +# Arch placement is handled by the group label (rpkgs-amd64, rpkgs-arm64). variables: weekly_rebuild_missing: description: "Manual run target: a specific -, or 'all' for every os/arch." @@ -37,78 +37,64 @@ when: skip_clone: true labels: - agent: ${AGENT} + group: rpkgs-${ARCH} matrix: include: - OS: alpine-322 ARCH: amd64 - AGENT: artemis R_VERSION: 4.5.3 IMG: alpine:3.24 - OS: alpine-322 ARCH: arm64 - AGENT: gaia R_VERSION: 4.5.3 IMG: alpine:3.24 - OS: alpine-323 ARCH: amd64 - AGENT: artemis R_VERSION: 4.5.3 IMG: alpine:3.24 - OS: alpine-323 ARCH: arm64 - AGENT: gaia R_VERSION: 4.5.3 IMG: alpine:3.24 - OS: redhat-8 ARCH: amd64 - AGENT: artemis R_VERSION: 4.4.3 IMG: redhat:8 - OS: redhat-8 ARCH: arm64 - AGENT: gaia R_VERSION: 4.4.3 IMG: redhat:8 - OS: redhat-9 ARCH: amd64 - AGENT: artemis R_VERSION: 4.4.3 IMG: redhat:9 - OS: redhat-9 ARCH: arm64 - AGENT: gaia R_VERSION: 4.4.3 IMG: redhat:9 - OS: redhat-10 ARCH: amd64 - AGENT: artemis R_VERSION: 4.5.3 IMG: redhat:10 - OS: redhat-10 ARCH: arm64 - AGENT: gaia R_VERSION: 4.5.3 IMG: redhat:10 - OS: ubuntu-2204 ARCH: amd64 - AGENT: artemis R_VERSION: 4.4.3 IMG: ubuntu:jammy - OS: ubuntu-2204 ARCH: arm64 - AGENT: gaia R_VERSION: 4.4.3 IMG: ubuntu:jammy - OS: ubuntu-2404 ARCH: amd64 - AGENT: artemis R_VERSION: 4.4.3 IMG: ubuntu:noble - OS: ubuntu-2404 ARCH: arm64 - AGENT: gaia R_VERSION: 4.4.3 IMG: ubuntu:noble