build-cran-binaries/.crow/archive-missed-packages.yaml
pat-s 7d873eb07b
refactor(ci): pin bincraft and skip reinstall when version matches
bincraft is baked into the build-env images, but every workflow run
unconditionally called pak::pak("git::.../bincraft.git"), costing
~30-60s per job.

Pin the install URL to a specific tag (v4.0.2) and guard the install
on packageVersion("bincraft") != "4.0.2". Healthy images skip the
install entirely; broken images and version drift still self-heal.

Adds a Renovate customManager so the pin is bumped automatically
when bincraft cuts a new tag.
2026-05-28 13:58:44 +02:00

74 lines
2 KiB
YAML

### Required extra vars
# woodpecker-cli pipeline create --var task=archive-missed-packages --branch=main --log-level=info 7
when:
- event: manual
evaluate: 'task == "archive-missed-packages"'
- event: cron
cron: archive-missed-packages
matrix:
include:
- CODENAME: jammy
ARCH: amd64
- CODENAME: jammy
ARCH: arm64
- CODENAME: noble
ARCH: amd64
- CODENAME: noble
ARCH: arm64
- CODENAME: redhat-8
ARCH: amd64
- CODENAME: redhat-8
ARCH: arm64
- CODENAME: redhat-9
ARCH: amd64
- CODENAME: redhat-9
ARCH: arm64
- CODENAME: alpine321
ARCH: amd64
- CODENAME: alpine321
ARCH: arm64
- CODENAME: alpine322
ARCH: amd64
- CODENAME: alpine322
ARCH: arm64
steps:
- name: 'Archive missed packages'
image: reg.devxy.io/rpkgs/build-env-alpine:3.23
pull: true
environment:
RED_HAT_DEV_PW:
from_secret: RED_HAT_DEV_PW
B2_S3_ACCESS_KEY:
from_secret: B2_S3_ACCESS_KEY
B2_S3_SECRET_KEY:
from_secret: B2_S3_SECRET_KEY
PGPASS:
from_secret: PGPASS
REPO_RO_TOKEN:
from_secret: REPO_RO_TOKEN
GITHUB_PAT:
from_secret: GITHUB_PAT
# normal env vars
GIT_USER: pat-s
R_VERSION: 4.5.3
commands:
- /opt/R/$R_VERSION/bin/R -q -e 'if (!requireNamespace("bincraft", quietly = TRUE) || packageVersion("bincraft") != "4.0.2") pak::pak("git::https://codefloe.com/rpkgs/bincraft.git@v4.0.2", dependencies = TRUE)'
- /opt/R/$R_VERSION/bin/R -q -e 'packageVersion("bincraft")'
- /opt/R/$R_VERSION/bin/R -q -e 'bincraft::process_unarchived_pkgs(Sys.getenv("CODENAME"), Sys.getenv("ARCH"), workers = 2L)'
backend_options:
kubernetes:
resources:
requests:
memory: 1Gi
cpu: 2000m
limits:
memory: 1200Mi
cpu: 2000m
tolerations:
- key: 'CI'
operator: 'Equal'
value: 'true'
effect: 'NoSchedule'