build-cran-binaries/build-all-versions-install-deps.yaml
pat-s f3c18b6805
refactor: migrate package installation from pak to uvr
bincraft dropped pak in favour of uvr, so the pipelines, helper scripts
and images in this repo move with it.

- add local/uvr-install.sh as the single replacement for pak::pak(); it
  bootstraps a pinned uvr, mints a throwaway project under TMPDIR and
  runs `uvr add --no-install` + `uvr sync --library`, because `uvr add`
  refuses to run outside a project and only `sync` honours --library
- install bincraft via its Forgejo spec (forgejo::codefloe.com/rpkgs/
  bincraft@<tag>) instead of a git:: URL, keeping the git ls-remote tag
  resolution
- pass UVR_R_BIN/UVR_TARGET_LIB from install-bincraft.R so the
  per-R-minor passes target their own R and library
- replace R_PKG_CACHE_DIR with UVR_CACHE_DIR/UVR_PACKAGES_DIR on the
  persistent volume, preserving the amd64-off/arm64-on split
- drop trim_pkgcache_metadata() and its test; uvr's cache does not grow
  the way pkgcache's _metadata dir did
- let uvr install system requirements from its vendored
  r-system-requirements rules, replacing pak::sysreqs_db_update()
- migrate the shiny app image, the alpine reprex and the CRAN loading
  test; ship uvr-install.sh in the build-one image
- track the uvr pin with renovate
2026-07-31 12:16:45 +00:00

63 lines
2.4 KiB
YAML

# ### Required extra vars
# # ARCH (amd64)
# # OS (alpine)
# # OS_VERSION (3.22)
# # R_VERSION (4.5)
# # when:
# # - event: manual
# # evaluate: 'task == "build-all-arm64"'
# # - event: manual
# # evaluate: 'task == "build-all-amd64"'
# skip_clone: true
# labels:
# platform: linux/amd64
# backend: kubernetes
# steps:
# - name: 'Install common R deps'
# image: "reg.devxy.io/rpkgs/build-env-${OS}:${OS_VERSION}"
# pull: true
# environment:
# REPO_RO_TOKEN:
# from_secret: REPO_RO_TOKEN
# GITHUB_PAT:
# from_secret: GITHUB_PAT
# HETZNER_S3_ACCESS_KEY_K3S:
# from_secret: HETZNER_S3_ACCESS_KEY_K3S
# HETZNER_S3_SECRET_KEY_K3S:
# from_secret: HETZNER_S3_SECRET_KEY_K3S
# # normal env vars
# GIT_USER: pat-s
# # set the location of uvr's caches, which persist the R package dependencies needed to install the packages themselves
# # UVR_CACHE_DIR: /mnt/cache/uvr/cache
# # UVR_PACKAGES_DIR: /mnt/cache/uvr/packages
# R_LIBS_USER: /mnt/cache/R-pkgs
# CCACHE_DIR: /mnt/cache/ccache
# volumes:
# - ${ARCH}-binaries-r-dep-cache-${OS}-${OS_VERSION//./}:/mnt/cache
# commands:
# - git clone -q https://pat-s:$$REPO_RO_TOKEN@git.devxy.io/devxy/build-cran-binaries.git .
# - mkdir -p /mnt/cache/R-pkgs
# - rm -rf /mnt/cache/R-pkgs/00LOCK-* /mnt/cache/R-pkgs/bincraft /mnt/cache/uvr
# - UVR_R_BIN=/opt/R/$R_VERSION/bin/R local/uvr-install.sh forgejo::codefloe.com/rpkgs/bincraft
# - /opt/R/$R_VERSION/bin/R -q -e 'packageVersion("bincraft")'
# # - /opt/R/$R_VERSION/bin/R -q -e "future::plan('multisession', workers = 6L); pkgs = bincraft::query_packages_without_historic_versions('alpine322', 'amd64'); saveRDS(pkgs, '/mnt/cache/pkgs_amd64.rds')"
# - /opt/R/$R_VERSION/bin/R -q -e "future::plan('multisession', workers = 6L); pkgs = bincraft::query_packages_without_historic_versions('alpine323', 'arm64'); saveRDS(pkgs, '/mnt/cache/pkgs_arm64.rds')"
# backend_options:
# kubernetes:
# resources:
# requests:
# memory: 1000Mi
# cpu: 1000m
# limits:
# memory: 4500Mi
# cpu: 8000m
# nodeSelector:
# kubernetes.io/arch: ${ARCH}
# tolerations:
# - key: 'CI'
# operator: 'Equal'
# value: 'true'
# effect: 'NoSchedule'