70 lines
2.3 KiB
YAML
70 lines
2.3 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
|
|
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
|