fangorn/ex_git_objectstore
public
ref:main
bump-anvil-pin failed
Command:
set -e
git config --global --add safe.directory /workspace
export MIX_HOME=/workspace/.mix
# Same gate as `release` above: CI checks out a detached HEAD, so the
# branch name is always "HEAD". Compare the checked-out SHA against
# origin/main instead. Deliberately not a `branch contains 'main'`
# match — that is a substring test and it matched
# feat/324-git-maintenance (fangorn/anvil#234).
git fetch origin main 2>/dev/null || true
HEAD_SHA=$(git rev-parse HEAD)
MAIN_SHA=$(git rev-parse origin/main 2>/dev/null || echo "")
if [ "$HEAD_SHA" != "$MAIN_SHA" ]; then
echo "Not a merge to main (HEAD $HEAD_SHA != origin/main $MAIN_SHA) — skipping pin bump"
exit 0
fi
# The runner-injected ANVIL_TOKEN is scoped to THIS repository and
# cannot write to fangorn/anvil (fangorn/anvil#390), so the bump needs a
# separately provisioned cross-repo credential. Its absence fails the
# job loudly — a silent skip would leave Anvil pinned to an old commit
# with nothing to show anything was missed. The script prints exactly
# what an admin has to provision.
curl -sL "https://anvil.fangorn.io/runner/download?os=$(uname -s)&arch=$(uname -m)" -o /usr/local/bin/anvil
chmod +x /usr/local/bin/anvil
PIN_BUMP_SHA="$HEAD_SHA" mix run --no-start -r ci/pin_bump.exs \
-e 'ExGitObjectstore.CI.PinBump.main()'
Runner:
DESKTOP-12GQBKK
paused
linux/x86_64
Started: Jul 31, 2026 at 06:37 UTC
Completed: Jul 31, 2026 at 06:37 UTC
Duration: 5s
Exit code:
1
Build Output
Using cached prepared image: anvil-prepared:cfa6aaa93a51
Generated ex_git_objectstore app
ANVIL_PIN_BUMP_TOKEN is not set, so the ex_git_objectstore pin on fangorn/anvil cannot be bumped.
The runner injects ANVIL_TOKEN scoped to this repository only; it cannot
write to fangorn/anvil. This step needs a separate credential, provisioned
once by an admin as a CI secret on this repository:
name: ANVIL_PIN_BUMP_TOKEN
value: an Anvil token that can push a branch to fangorn/anvil
and open a pull request on it (contents: write)
Until that secret exists this step will keep failing, which is deliberate:
a silent skip would leave Anvil pinned to an old commit with nothing to
show that anything was missed.