# Publish a linux-amd64 binary on every tag push. Two destinations:
#
# 1. Build artifact (cacher-linux-amd64 visible on the job page,
# pruned by builds.sr.ht after 90 days).
#
# 2. pages.sr.ht under cacher.srht.bigb.es so downstream projects
# can `wget https://cacher.srht.bigb.es/cacher-linux-amd64` with
# a stable URL. The latest tag overwrites the previous publish;
# historical versions remain available via the artifact link
# during the 90-day window.
#
# Auto-submission is restricted to tag refs only.
image: ubuntu/noble
packages:
- curl
- ca-certificates
oauth: pages.sr.ht/PAGES:RW
sources:
- https://git.srht.bigb.es/~bigbes/ci-cacher
environment:
GO_VERSION: "1.26.3"
PATH: /home/build/.local/go/bin:/home/build/.local/bin:/home/build/go/bin:/usr/local/bin:/usr/bin:/bin
GOPATH: /home/build/go
PAGES_DOMAIN: cacher.srht.bigb.es
submitter:
git.sr.ht:
enabled: true
allow-refs:
- "refs/tags/*"
tasks:
- install_go: |
GO_TARBALL="go${GO_VERSION}.linux-amd64.tar.gz"
mkdir -p ~/.local
curl -sSL "https://go.dev/dl/$GO_TARBALL" -o "/tmp/$GO_TARBALL"
tar -xz -C ~/.local -f "/tmp/$GO_TARBALL"
rm "/tmp/$GO_TARBALL"
go version
- install_hut: |
# hut isn't in ubuntu/noble's repos; build it from source with the
# Go we just installed. ~5s on a warm GOPATH, ~30s cold.
go install git.sr.ht/~xenrox/hut@latest
hut --version
- build: |
cd ci-cacher
VERSION=$(git describe --tags --abbrev=0 2>/dev/null || cat VERSION)
echo "Building $VERSION"
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 \
go build -ldflags "-s -w -X go.bigb.es/cacher/internal/version.version=${VERSION}" \
-o /home/build/cacher-linux-amd64 .
/home/build/cacher-linux-amd64 version
sha256sum /home/build/cacher-linux-amd64
- package_pages: |
# pages.sr.ht expects a tarball whose top-level contents become the
# site root — so `tar -C dist .`, not `tar dist/`. The binary lands
# at https://$PAGES_DOMAIN/cacher-linux-amd64. A minimal index.html
# makes the root URL informative instead of a 404.
VERSION=$(cd ci-cacher && (git describe --tags --abbrev=0 2>/dev/null || cat VERSION))
SUM=$(sha256sum /home/build/cacher-linux-amd64 | awk '{print $1}')
mkdir -p /home/build/dist
cp /home/build/cacher-linux-amd64 /home/build/dist/cacher-linux-amd64
cat > /home/build/dist/index.html <<EOF
<!doctype html><meta charset="utf-8"><title>cacher</title>
<h1>cacher $VERSION</h1>
<p>S3-backed CI cache helper. <a href="https://git.srht.bigb.es/~bigbes/ci-cacher">Source</a>.</p>
<pre>wget https://$PAGES_DOMAIN/cacher-linux-amd64
sha256sum cacher-linux-amd64 # expect: $SUM</pre>
EOF
cd /home/build/dist
tar -czvf /home/build/site.tar.gz .
- publish_pages: |
hut pages publish -d "$PAGES_DOMAIN" /home/build/site.tar.gz
artifacts:
- cacher-linux-amd64