refactor(ci): skip bincraft reinstall when image already has it #72

Merged
pat-s merged 2 commits from pr/guard-bincraft-reinstall into main 2026-05-28 12:37:59 +00:00
Owner

Summary

bincraft is baked into the build-env images, but every workflow still unconditionally calls pak::pak("git::.../bincraft.git") (~30–60s per job).

Pin bincraft to a specific tag (currently v4.0.2) and guard the install on a version check.

- /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")'
  • Image matches the pin → skip install entirely.
  • Image is missing bincraft or has a different version → install the pinned tag (covers both broken bakes and intentional version bumps).
  • Renovate customManager keeps the pin and the version-check string in sync whenever bincraft cuts a new tag (uses git-tags datasource against the bincraft repo).

Touches 43 .crow YAMLs + renovate.json.

## Summary bincraft is baked into the build-env images, but every workflow still unconditionally calls `pak::pak("git::.../bincraft.git")` (~30–60s per job). Pin bincraft to a specific tag (currently `v4.0.2`) and guard the install on a version check. ``` - /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")' ``` - Image matches the pin → skip install entirely. - Image is missing bincraft or has a different version → install the pinned tag (covers both broken bakes and intentional version bumps). - Renovate customManager keeps the pin and the version-check string in sync whenever bincraft cuts a new tag (uses `git-tags` datasource against the bincraft repo). Touches 43 `.crow` YAMLs + `renovate.json`.
bincraft is baked into the build-env images, but every workflow run
unconditionally called pak::pak("git::.../bincraft.git") to defend
against bakes where the install silently failed.
That cost ~30-60s per job (pak resolves Remotes, may recompile),
which adds up across all process-updates, update-package-index,
weekly-rebuild and archive-missed-packages workflows.

Guard the call with requireNamespace(): healthy images skip the
install entirely; broken images still self-heal.
pat-s force-pushed pr/guard-bincraft-reinstall from 63b4a51b31 to 7d873eb07b 2026-05-28 11:58:51 +00:00 Compare
pat-s force-pushed pr/guard-bincraft-reinstall from 7d873eb07b to 7323ac1713 2026-05-28 12:01:45 +00:00 Compare
pat-s merged commit b1bed68898 into main 2026-05-28 12:37:59 +00:00
pat-s deleted branch pr/guard-bincraft-reinstall 2026-05-28 12:37:59 +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!72
No description provided.