Pre-releases (versions with a hyphen) now upload their .debs to the "testing" distribution instead of "stable", so servers following stable never get an RC from apt upgrade. An RC can take its release notes from its final version's section or Unreleased; the workflow checks the notes with 'gitea-release.sh notes'. Also fix publishing RCs, whose .deb names carry the Debian version (0.2.0~rc.1) and were rejected. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
66 lines
2.1 KiB
YAML
66 lines
2.1 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:
|
|
# distribution "stable", or "testing" for a pre-release (a version
|
|
# with a hyphen), which Gitea also marks as a pre-release.
|
|
#
|
|
# 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
|
|
# The release notes (a pre-release may use its final version's
|
|
# section or Unreleased; see scripts/gitea-release.sh).
|
|
if ! scripts/gitea-release.sh notes > /dev/null; then
|
|
echo "::error::no release notes for $version in CHANGELOG.md"
|
|
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
|
|
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
|