The version moves from the header to a "Powered by Jarl" footer. A build of a release tag (HEAD tagged v<VERSION>, no tracked changes; the release workflow sets RELEASE_TAG) shows and links the release; any other build shows and links its commit, marked -modified with uncommitted changes. jarld version, jarl --version, /status and /auth/whoami report the same. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
66 lines
2.0 KiB
YAML
66 lines
2.0 KiB
YAML
# Builds and publishes a release when a version tag (v0.2.0, v1.0.0-rc.1)
|
|
# is pushed:
|
|
# * a Gitea release with the CHANGELOG notes, the linux tarballs, the CLI
|
|
# for Linux, macOS and Windows, the .debs and SHA256SUMS;
|
|
# * the .debs (amd64, arm64) in the owner's Debian package registry.
|
|
#
|
|
# Needs a repository secret RELEASE_TOKEN: an access token of a user who
|
|
# can write to the repository, with the write:repository and write:package
|
|
# scopes. docs/development.md ("Releasing") has the steps.
|
|
name: release
|
|
|
|
on:
|
|
push:
|
|
tags: ["v*"]
|
|
|
|
jobs:
|
|
release:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version-file: go.mod
|
|
|
|
- name: Check the tag against VERSION and CHANGELOG.md
|
|
run: |
|
|
version=$(cat VERSION)
|
|
if [ "$GITHUB_REF_NAME" != "v$version" ]; then
|
|
echo "::error::tag $GITHUB_REF_NAME does not match VERSION ($version)"
|
|
exit 1
|
|
fi
|
|
if ! grep -q "^## \[$version\]" CHANGELOG.md; then
|
|
echo "::error::CHANGELOG.md has no '## [$version]' section"
|
|
exit 1
|
|
fi
|
|
|
|
- name: Tools
|
|
run: |
|
|
missing=
|
|
for t in jq dpkg-deb curl; do command -v $t >/dev/null || missing="$missing $t"; done
|
|
if [ -n "$missing" ]; then
|
|
sudo=; [ "$(id -u)" = 0 ] || sudo=sudo
|
|
$sudo apt-get update -qq && $sudo apt-get install -y -qq jq dpkg curl
|
|
fi
|
|
|
|
- name: Test
|
|
run: make test
|
|
|
|
- name: Build
|
|
env:
|
|
# Checked against VERSION above; don't depend on the checkout
|
|
# having the tag.
|
|
RELEASE_TAG: ${{ github.ref_name }}
|
|
run: |
|
|
export DEB_MAINTAINER="$(git log -1 --format='%an <%ae>')"
|
|
make dist
|
|
make cli-dist
|
|
make deb DEB_ARCH=amd64
|
|
make deb DEB_ARCH=arm64
|
|
|
|
- name: Publish
|
|
env:
|
|
GITEA_TOKEN: ${{ secrets.RELEASE_TOKEN }}
|
|
run: scripts/gitea-release.sh
|