# 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 bigbes.pages.srht.bigb.es/ci-cacher/, so # downstream projects can `wget` from a stable URL. We publish # with `hut pages publish -s /ci-cacher` so this manifest only # touches files under that subpath — other projects sharing the # user-level pages domain stay intact. Latest tag overwrites the # previous publish under /ci-cacher; 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: bigbes.pages.srht.bigb.es PAGES_SUBPATH: /ci-cacher 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 map to the # publish path — so `tar -C dist .`, not `tar dist/`. With # `-s /ci-cacher` the binary lands at # https://$PAGES_DOMAIN/ci-cacher/cacher-linux-amd64. A minimal # index.html under /ci-cacher makes the project 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 <cacher $VERSION

cacher $VERSION

S3-backed CI cache helper. Source.

wget https://$PAGES_DOMAIN$PAGES_SUBPATH/cacher-linux-amd64
      sha256sum cacher-linux-amd64  # expect: $SUM
EOF cd /home/build/dist tar -czvf /home/build/site.tar.gz . - publish_pages: | hut pages publish -d "$PAGES_DOMAIN" -s "$PAGES_SUBPATH" /home/build/site.tar.gz artifacts: - cacher-linux-amd64