fangorn/ex_git_objectstore
public
ref:main
release passed
Command:
set -e
apt-get update && apt-get install -y --no-install-recommends git jq curl
git config --global --add safe.directory /workspace
export MIX_HOME=/workspace/.mix
# Only release from main branch
# CI checks out a detached HEAD so git branch name is always "HEAD".
# Compare the checked-out SHA against origin/main instead.
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 "Skipping release: HEAD ($HEAD_SHA) != origin/main ($MAIN_SHA)"
exit 0
fi
# Install anvil CLI. /runner/download serves the unified
# anvil/anvil-runner binary (fangorn/anvil#49 merged the two).
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
# Credentials are auto-injected by the runner: ANVIL_TOKEN is a
# per-job API token generated at dispatch and auto-revoked when
# this job finishes, and ANVIL_SERVER_URL points at the server
# that dispatched us. Both are part of the job environment; we
# don't need to set up any secrets manually.
#
# The scopes granted to that token are controlled by org/repo
# CI-permission settings — for this repo's release step to work,
# an admin must grant `releases: write` via:
# PUT /api/v1/fangorn/ex_git_objectstore/ci/permissions
# See fangorn/anvil#46 for the full design.
#
# `anvil auth status` fails loud if the runner didn't inject the
# token, if it's malformed, or if the server rejects it — which
# is exactly what we want before `anvil release create` tries to
# use it downstream.
/usr/local/bin/anvil auth status
# Compute CalVer version
VERSION=$(bash ci/release.sh)
echo "Releasing version: $VERSION"
# Idempotency: skip if this version tag already exists
if git rev-parse "$VERSION" >/dev/null 2>&1; then
echo "Tag $VERSION already exists, skipping release"
exit 0
fi
# Build with version
export VERSION
mix compile
# Generate changelog from commits since last tag
LAST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || git rev-list --max-parents=0 HEAD)
CHANGELOG=$(git log --oneline "$LAST_TAG"..HEAD)
# Generate docs
mix docs
tar czf ex_git_objectstore-${VERSION}-docs.tar.gz doc/
# Create Anvil release
anvil release create \
--tag "$VERSION" \
--title "ExGitObjectstore $VERSION" \
--body "$CHANGELOG"
# Tag and push. The runner clones via an auto-embedded clone
# token in origin, which only has read access — `git push origin`
# would 401. Push via an explicit URL that embeds the job API
# token (ANVIL_TOKEN) so auth goes through the repo's
# contents:write scope (see fangorn/anvil#46 / #59).
git tag "$VERSION"
git push \
"https://x-token:${ANVIL_TOKEN}@anvil.fangorn.io/fangorn/ex_git_objectstore.git" \
"$VERSION"
echo "Released $VERSION"
Runner:
carl
online
linux/arm64
Started: May 06, 2026 at 15:22 UTC
Completed: May 06, 2026 at 15:22 UTC
Duration: 19s
Exit code:
0
Build Output
Pulling image: hexpm/elixir:1.18.4-erlang-28.0.2-debian-bookworm-20250811
Get:1 http://deb.debian.org/debian bookworm InRelease [151 kB]
Get:2 http://deb.debian.org/debian bookworm-updates InRelease [55.4 kB]
Get:3 http://deb.debian.org/debian-security bookworm-security InRelease [48.0 kB]
Get:4 http://deb.debian.org/debian bookworm/main arm64 Packages [8691 kB]
Get:5 http://deb.debian.org/debian bookworm-updates/main arm64 Packages [6936 B]
Get:6 http://deb.debian.org/debian-security bookworm-security/main arm64 Packages [294 kB]
Fetched 9246 kB in 2s (5049 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
The following additional packages will be installed:
git-man libbrotli1 libcurl3-gnutls libcurl4 liberror-perl libexpat1
libgdbm-compat4 libgdbm6 libgssapi-krb5-2 libjq1 libk5crypto3 libkeyutils1
libkrb5-3 libkrb5support0 libldap-2.5-0 libnghttp2-14 libonig5 libperl5.36
libpsl5 librtmp1 libsasl2-2 libsasl2-modules-db libssh2-1 perl perl-base
perl-modules-5.36
Suggested packages:
gettext-base git-daemon-run | git-daemon-sysvinit git-doc git-email git-gui
gitk gitweb git-cvs git-mediawiki git-svn gdbm-l10n krb5-doc krb5-user
sensible-utils perl-doc libterm-readline-gnu-perl
| libterm-readline-perl-perl make libtap-harness-archive-perl
Recommended packages:
patch less ssh-client krb5-locales libldap-common publicsuffix
libsasl2-modules
The following NEW packages will be installed:
curl git git-man jq libbrotli1 libcurl3-gnutls libcurl4 liberror-perl
libexpat1 libgdbm-compat4 libgdbm6 libgssapi-krb5-2 libjq1 libk5crypto3
libkeyutils1 libkrb5-3 libkrb5support0 libldap-2.5-0 libnghttp2-14 libonig5
libperl5.36 libpsl5 librtmp1 libsasl2-2 libsasl2-modules-db libssh2-1 perl
perl-modules-5.36
The following packages will be upgraded:
perl-base
1 upgraded, 28 newly installed, 0 to remove and 24 not upgraded.
Need to get 20.8 MB of archives.
After this operation, 108 MB of additional disk space will be used.
Get:1 http://deb.debian.org/debian bookworm/main arm64 perl-base arm64 5.36.0-7+deb12u3 [1475 kB]
Get:2 http://deb.debian.org/debian bookworm/main arm64 perl-modules-5.36 all 5.36.0-7+deb12u3 [2815 kB]
Get:3 http://deb.debian.org/debian bookworm/main arm64 libgdbm6 arm64 1.23-3 [70.9 kB]
Get:4 http://deb.debian.org/debian bookworm/main arm64 libgdbm-compat4 arm64 1.23-3 [48.0 kB]
Get:5 http://deb.debian.org/debian bookworm/main arm64 libperl5.36 arm64 5.36.0-7+deb12u3 [4009 kB]
Get:6 http://deb.debian.org/debian bookworm/main arm64 perl arm64 5.36.0-7+deb12u3 [239 kB]
Get:7 http://deb.debian.org/debian bookworm/main arm64 libbrotli1 arm64 1.0.9-2+b6 [269 kB]
Get:8 http://deb.debian.org/debian bookworm/main arm64 libkrb5support0 arm64 1.20.1-2+deb12u4 [32.5 kB]
Get:9 http://deb.debian.org/debian bookworm/main arm64 libk5crypto3 arm64 1.20.1-2+deb12u4 [80.2 kB]
Get:10 http://deb.debian.org/debian bookworm/main arm64 libkeyutils1 arm64 1.6.3-2 [8844 B]
Get:11 http://deb.debian.org/debian bookworm/main arm64 libkrb5-3 arm64 1.20.1-2+deb12u4 [314 kB]
Get:12 http://deb.debian.org/debian bookworm/main arm64 libgssapi-krb5-2 arm64 1.20.1-2+deb12u4 [124 kB]
Get:13 http://deb.debian.org/debian bookworm/main arm64 libsasl2-modules-db arm64 2.1.28+dfsg-10 [20.8 kB]
Get:14 http://deb.debian.org/debian bookworm/main arm64 libsasl2-2 arm64 2.1.28+dfsg-10 [58.0 kB]
Get:15 http://deb.debian.org/debian bookworm/main arm64 libldap-2.5-0 arm64 2.5.13+dfsg-5 [171 kB]
Get:16 http://deb.debian.org/debian bookworm/main arm64 libnghttp2-14 arm64 1.52.0-1+deb12u2 [68.6 kB]
Get:17 http://deb.debian.org/debian bookworm/main arm64 libpsl5 arm64 0.21.2-1 [58.6 kB]
Get:18 http://deb.debian.org/debian bookworm/main arm64 librtmp1 arm64 2.4+20151223.gitfa8646d.1-2+b2 [59.4 kB]
Get:19 http://deb.debian.org/debian bookworm/main arm64 libssh2-1 arm64 1.10.0-3+b1 [172 kB]
Get:20 http://deb.debian.org/debian bookworm/main arm64 libcurl4 arm64 7.88.1-10+deb12u14 [367 kB]
Get:21 http://deb.debian.org/debian bookworm/main arm64 curl arm64 7.88.1-10+deb12u14 [309 kB]
Get:22 http://deb.debian.org/debian bookworm/main arm64 libcurl3-gnutls arm64 7.88.1-10+deb12u14 [362 kB]
Get:23 http://deb.debian.org/debian bookworm/main arm64 libexpat1 arm64 2.5.0-1+deb12u2 [86.3 kB]
Get:24 http://deb.debian.org/debian bookworm/main arm64 liberror-perl all 0.17029-2 [29.0 kB]
Get:25 http://deb.debian.org/debian bookworm/main arm64 git-man all 1:2.39.5-0+deb12u3 [2053 kB]
Get:26 http://deb.debian.org/debian bookworm/main arm64 git arm64 1:2.39.5-0+deb12u3 [7153 kB]
Get:27 http://deb.debian.org/debian bookworm/main arm64 libonig5 arm64 6.9.8-1 [179 kB]
Get:28 http://deb.debian.org/debian bookworm/main arm64 libjq1 arm64 1.6-2.1+deb12u1 [120 kB]
Get:29 http://deb.debian.org/debian bookworm/main arm64 jq arm64 1.6-2.1+deb12u1 [63.3 kB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 20.8 MB in 4s (5907 kB/s)
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 6608 files and directories currently installed.)
Preparing to unpack .../perl-base_5.36.0-7+deb12u3_arm64.deb ...
Unpacking perl-base (5.36.0-7+deb12u3) over (5.36.0-7+deb12u2) ...
Setting up perl-base (5.36.0-7+deb12u3) ...
Selecting previously unselected package perl-modules-5.36.
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 6608 files and directories currently installed.)
Preparing to unpack .../00-perl-modules-5.36_5.36.0-7+deb12u3_all.deb ...
Unpacking perl-modules-5.36 (5.36.0-7+deb12u3) ...
Selecting previously unselected package libgdbm6:arm64.
Preparing to unpack .../01-libgdbm6_1.23-3_arm64.deb ...
Unpacking libgdbm6:arm64 (1.23-3) ...
Selecting previously unselected package libgdbm-compat4:arm64.
Preparing to unpack .../02-libgdbm-compat4_1.23-3_arm64.deb ...
Unpacking libgdbm-compat4:arm64 (1.23-3) ...
Selecting previously unselected package libperl5.36:arm64.
Preparing to unpack .../03-libperl5.36_5.36.0-7+deb12u3_arm64.deb ...
Unpacking libperl5.36:arm64 (5.36.0-7+deb12u3) ...
Selecting previously unselected package perl.
Preparing to unpack .../04-perl_5.36.0-7+deb12u3_arm64.deb ...
Unpacking perl (5.36.0-7+deb12u3) ...
Selecting previously unselected package libbrotli1:arm64.
Preparing to unpack .../05-libbrotli1_1.0.9-2+b6_arm64.deb ...
Unpacking libbrotli1:arm64 (1.0.9-2+b6) ...
Selecting previously unselected package libkrb5support0:arm64.
Preparing to unpack .../06-libkrb5support0_1.20.1-2+deb12u4_arm64.deb ...
Unpacking libkrb5support0:arm64 (1.20.1-2+deb12u4) ...
Selecting previously unselected package libk5crypto3:arm64.
Preparing to unpack .../07-libk5crypto3_1.20.1-2+deb12u4_arm64.deb ...
Unpacking libk5crypto3:arm64 (1.20.1-2+deb12u4) ...
Selecting previously unselected package libkeyutils1:arm64.
Preparing to unpack .../08-libkeyutils1_1.6.3-2_arm64.deb ...
Unpacking libkeyutils1:arm64 (1.6.3-2) ...
Selecting previously unselected package libkrb5-3:arm64.
Preparing to unpack .../09-libkrb5-3_1.20.1-2+deb12u4_arm64.deb ...
Unpacking libkrb5-3:arm64 (1.20.1-2+deb12u4) ...
Selecting previously unselected package libgssapi-krb5-2:arm64.
Preparing to unpack .../10-libgssapi-krb5-2_1.20.1-2+deb12u4_arm64.deb ...
Unpacking libgssapi-krb5-2:arm64 (1.20.1-2+deb12u4) ...
Selecting previously unselected package libsasl2-modules-db:arm64.
Preparing to unpack .../11-libsasl2-modules-db_2.1.28+dfsg-10_arm64.deb ...
Unpacking libsasl2-modules-db:arm64 (2.1.28+dfsg-10) ...
Selecting previously unselected package libsasl2-2:arm64.
Preparing to unpack .../12-libsasl2-2_2.1.28+dfsg-10_arm64.deb ...
Unpacking libsasl2-2:arm64 (2.1.28+dfsg-10) ...
Selecting previously unselected package libldap-2.5-0:arm64.
Preparing to unpack .../13-libldap-2.5-0_2.5.13+dfsg-5_arm64.deb ...
Unpacking libldap-2.5-0:arm64 (2.5.13+dfsg-5) ...
Selecting previously unselected package libnghttp2-14:arm64.
Preparing to unpack .../14-libnghttp2-14_1.52.0-1+deb12u2_arm64.deb ...
Unpacking libnghttp2-14:arm64 (1.52.0-1+deb12u2) ...
Selecting previously unselected package libpsl5:arm64.
Preparing to unpack .../15-libpsl5_0.21.2-1_arm64.deb ...
Unpacking libpsl5:arm64 (0.21.2-1) ...
Selecting previously unselected package librtmp1:arm64.
Preparing to unpack .../16-librtmp1_2.4+20151223.gitfa8646d.1-2+b2_arm64.deb ...
Unpacking librtmp1:arm64 (2.4+20151223.gitfa8646d.1-2+b2) ...
Selecting previously unselected package libssh2-1:arm64.
Preparing to unpack .../17-libssh2-1_1.10.0-3+b1_arm64.deb ...
Unpacking libssh2-1:arm64 (1.10.0-3+b1) ...
Selecting previously unselected package libcurl4:arm64.
Preparing to unpack .../18-libcurl4_7.88.1-10+deb12u14_arm64.deb ...
Unpacking libcurl4:arm64 (7.88.1-10+deb12u14) ...
Selecting previously unselected package curl.
Preparing to unpack .../19-curl_7.88.1-10+deb12u14_arm64.deb ...
Unpacking curl (7.88.1-10+deb12u14) ...
Selecting previously unselected package libcurl3-gnutls:arm64.
Preparing to unpack .../20-libcurl3-gnutls_7.88.1-10+deb12u14_arm64.deb ...
Unpacking libcurl3-gnutls:arm64 (7.88.1-10+deb12u14) ...
Selecting previously unselected package libexpat1:arm64.
Preparing to unpack .../21-libexpat1_2.5.0-1+deb12u2_arm64.deb ...
Unpacking libexpat1:arm64 (2.5.0-1+deb12u2) ...
Selecting previously unselected package liberror-perl.
Preparing to unpack .../22-liberror-perl_0.17029-2_all.deb ...
Unpacking liberror-perl (0.17029-2) ...
Selecting previously unselected package git-man.
Preparing to unpack .../23-git-man_1%3a2.39.5-0+deb12u3_all.deb ...
Unpacking git-man (1:2.39.5-0+deb12u3) ...
Selecting previously unselected package git.
Preparing to unpack .../24-git_1%3a2.39.5-0+deb12u3_arm64.deb ...
Unpacking git (1:2.39.5-0+deb12u3) ...
Selecting previously unselected package libonig5:arm64.
Preparing to unpack .../25-libonig5_6.9.8-1_arm64.deb ...
Unpacking libonig5:arm64 (6.9.8-1) ...
Selecting previously unselected package libjq1:arm64.
Preparing to unpack .../26-libjq1_1.6-2.1+deb12u1_arm64.deb ...
Unpacking libjq1:arm64 (1.6-2.1+deb12u1) ...
Selecting previously unselected package jq.
Preparing to unpack .../27-jq_1.6-2.1+deb12u1_arm64.deb ...
Unpacking jq (1.6-2.1+deb12u1) ...
Setting up libexpat1:arm64 (2.5.0-1+deb12u2) ...
Setting up libkeyutils1:arm64 (1.6.3-2) ...
Setting up libpsl5:arm64 (0.21.2-1) ...
Setting up libbrotli1:arm64 (1.0.9-2+b6) ...
Setting up libnghttp2-14:arm64 (1.52.0-1+deb12u2) ...
Setting up libkrb5support0:arm64 (1.20.1-2+deb12u4) ...
Setting up libsasl2-modules-db:arm64 (2.1.28+dfsg-10) ...
Setting up perl-modules-5.36 (5.36.0-7+deb12u3) ...
Setting up librtmp1:arm64 (2.4+20151223.gitfa8646d.1-2+b2) ...
Setting up libk5crypto3:arm64 (1.20.1-2+deb12u4) ...
Setting up libsasl2-2:arm64 (2.1.28+dfsg-10) ...
Setting up git-man (1:2.39.5-0+deb12u3) ...
Setting up libssh2-1:arm64 (1.10.0-3+b1) ...
Setting up libkrb5-3:arm64 (1.20.1-2+deb12u4) ...
Setting up libonig5:arm64 (6.9.8-1) ...
Setting up libgdbm6:arm64 (1.23-3) ...
Setting up libjq1:arm64 (1.6-2.1+deb12u1) ...
Setting up libldap-2.5-0:arm64 (2.5.13+dfsg-5) ...
Setting up libgssapi-krb5-2:arm64 (1.20.1-2+deb12u4) ...
Setting up libgdbm-compat4:arm64 (1.23-3) ...
Setting up jq (1.6-2.1+deb12u1) ...
Setting up libcurl4:arm64 (7.88.1-10+deb12u14) ...
Setting up curl (7.88.1-10+deb12u14) ...
Setting up libperl5.36:arm64 (5.36.0-7+deb12u3) ...
Setting up libcurl3-gnutls:arm64 (7.88.1-10+deb12u14) ...
Setting up perl (5.36.0-7+deb12u3) ...
Setting up liberror-perl (0.17029-2) ...
Setting up git (1:2.39.5-0+deb12u3) ...
Processing triggers for libc-bin (2.36-9+deb12u10) ...
Skipping release: HEAD (bcf7e96f87a50d61b6e3f3858566edb20e310144) != origin/main (6994d00e454b0e14bcb069d4e50c308556d5597b)