fix(rebuild): harden split workflow setup (#164)
All checks were successful
ci/crow/cron/process-updates/7 Pipeline was successful
ci/crow/manual/weekly-rebuild-missing/54 Pipeline was successful
ci/crow/manual/weekly-rebuild-missing/52 Pipeline was successful
ci/crow/manual/weekly-rebuild-missing/53 Pipeline was successful
ci/crow/manual/weekly-rebuild-reindex/18 Pipeline was successful
All checks were successful
ci/crow/cron/process-updates/7 Pipeline was successful
ci/crow/manual/weekly-rebuild-missing/54 Pipeline was successful
ci/crow/manual/weekly-rebuild-missing/52 Pipeline was successful
ci/crow/manual/weekly-rebuild-missing/53 Pipeline was successful
ci/crow/manual/weekly-rebuild-reindex/18 Pipeline was successful
## Motivation Weekly rebuild shards can all hit a transient CRAN DNS/index outage at once, and the dependent CDN purge always fails because it tries to clone over the checkout preserved from the re-index step. ## Changes - Retry `uvr add` resolution up to four times with bounded backoff. - Reuse the existing Crow workspace checkout in the CDN purge step. - Remove the purge step's unused Git package and repository token. ## Validation - `crow lint .crow/` - `shellcheck local/uvr-install.sh scripts/purge_cdn_zone.sh` - `git diff --check` Reviewed-on: #164
This commit is contained in:
parent
4b7dc28cc8
commit
aa4c95457f
2 changed files with 16 additions and 7 deletions
|
|
@ -173,14 +173,12 @@ steps:
|
|||
OTEL_R_METRICS_EXPORTER: none
|
||||
BUNNYNET_API_KEY:
|
||||
from_secret: BUNNYNET_API_KEY
|
||||
REPO_RO_TOKEN:
|
||||
from_secret: REPO_RO_TOKEN
|
||||
# All hostnames on the zone share this id, so one purge covers
|
||||
# cran.devxy.io, cran.allianceswisspass.devxy.io and cran.rpkgs.com.
|
||||
BUNNY_PULLZONE: '3857050'
|
||||
commands:
|
||||
- apk add --no-cache -q bash curl git
|
||||
- git clone -q https://pat-s:$$REPO_RO_TOKEN@git.devxy.io/devxy/build-cran-binaries.git .
|
||||
- apk add --no-cache -q bash curl
|
||||
# Crow carries the checkout from the re-index step into this step.
|
||||
- bash scripts/purge_cdn_zone.sh "$BUNNYNET_API_KEY" "$BUNNY_PULLZONE"
|
||||
# Runs on every row rather than on one designated slot: a cron fires only
|
||||
# its own slot's row, so gating on a named slot would leave every other
|
||||
|
|
|
|||
|
|
@ -84,9 +84,20 @@ trap 'rm -rf "$project_dir"' EXIT
|
|||
cd "$project_dir"
|
||||
|
||||
"$uvr_bin" init --here --r-version "$r_full"
|
||||
# --no-install: resolve and lock only. The install happens in the sync below,
|
||||
# which is the only command that honours --library.
|
||||
"$uvr_bin" add --no-install "$@"
|
||||
# --no-install resolves and locks only; retry because concurrent shards can
|
||||
# expose short-lived DNS or CRAN-index failures and uvr rolls the manifest back
|
||||
# cleanly after an unsuccessful resolution.
|
||||
add_attempt=1
|
||||
while ! "$uvr_bin" add --no-install "$@"; do
|
||||
if [ "$add_attempt" -ge 4 ]; then
|
||||
echo "error: uvr add failed after ${add_attempt} attempts" >&2
|
||||
exit 1
|
||||
fi
|
||||
add_delay=$((add_attempt * 10))
|
||||
echo "warning: uvr add attempt ${add_attempt} failed; retrying in ${add_delay}s" >&2
|
||||
sleep "$add_delay"
|
||||
add_attempt=$((add_attempt + 1))
|
||||
done
|
||||
|
||||
# TEMPORARY (drop once the images ship a uvr above v0.4.5): the sync below runs
|
||||
# `apt-get install` for every resolved system dependency without refreshing the
|
||||
|
|
|
|||
Loading…
Reference in a new issue