179 lines
6.5 KiB
YAML
179 lines
6.5 KiB
YAML
name: Release Citizen Launcher
|
|
|
|
on:
|
|
push:
|
|
tags:
|
|
- 'v*'
|
|
|
|
permissions:
|
|
code: read
|
|
releases: write
|
|
|
|
env:
|
|
GITEA_API_URL: ${{ gitea.api_url }}
|
|
GITEA_REPOSITORY: ${{ gitea.repository }}
|
|
GITEA_TOKEN: ${{ gitea.token }}
|
|
RELEASE_SOURCE: gitea:${{ gitea.api_url }}/repos/${{ gitea.repository }}
|
|
TAG_NAME: ${{ gitea.ref_name }}
|
|
|
|
jobs:
|
|
prepare-release:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Verify tag and VERSION
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
VERSION="$(tr -d '[:space:]' < VERSION)"
|
|
test "$TAG_NAME" = "v${VERSION}"
|
|
- name: Create Gitea release
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
VERSION="$(tr -d '[:space:]' < VERSION)"
|
|
bash ./scripts/gitea-release.sh ensure \
|
|
"$TAG_NAME" \
|
|
"Citizen Launcher ${VERSION}" \
|
|
RELEASE_NOTES.md \
|
|
"${{ gitea.sha }}"
|
|
|
|
deb-and-generic:
|
|
needs: prepare-release
|
|
runs-on: ubuntu-latest
|
|
env:
|
|
CITIZEN_LAUNCHER_RELEASE_REPO: gitea:${{ gitea.api_url }}/repos/${{ gitea.repository }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/setup-go@v5
|
|
with:
|
|
go-version: '1.23.x'
|
|
cache: false
|
|
- name: Install build dependencies
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
SUDO=""
|
|
command -v sudo >/dev/null 2>&1 && SUDO=sudo
|
|
$SUDO apt-get update
|
|
$SUDO apt-get install -y --no-install-recommends python3 python3-yaml dpkg-dev zstd curl
|
|
- name: Full regression and package suite
|
|
run: bash ./tests/full-verify.sh
|
|
- name: Upload Debian and generic assets to Gitea
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
VERSION="$(tr -d '[:space:]' < VERSION)"
|
|
bash ./scripts/gitea-release.sh upload "$TAG_NAME" "dist/citizen-launcher_${VERSION}_amd64.deb"
|
|
bash ./scripts/gitea-release.sh upload "$TAG_NAME" "dist/citizen-launcher-${VERSION}-linux-amd64.tar.gz"
|
|
|
|
rpm:
|
|
needs: prepare-release
|
|
runs-on: ubuntu-latest
|
|
container: fedora:44
|
|
env:
|
|
CITIZEN_LAUNCHER_RELEASE_REPO: gitea:${{ gitea.api_url }}/repos/${{ gitea.repository }}
|
|
WORKSPACE: ${{ gitea.workspace }}
|
|
steps:
|
|
- name: Bootstrap minimal checkout/release dependencies
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
mkdir -p "$WORKSPACE/.dnf-cache"
|
|
dnf -y \
|
|
--setopt=system_cachedir="$WORKSPACE/.dnf-cache" \
|
|
--setopt=install_weak_deps=False \
|
|
--setopt=tsflags=nodocs \
|
|
install git-core jq
|
|
find "$WORKSPACE/.dnf-cache" -type f -name '*.rpm' -delete 2>/dev/null || true
|
|
df -h /
|
|
- uses: actions/checkout@v4
|
|
- name: Verify tag and build backend
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
VERSION="$(tr -d '[:space:]' < VERSION)"
|
|
test "$TAG_NAME" = "v${VERSION}"
|
|
dnf -y \
|
|
--setopt=system_cachedir="$WORKSPACE/.dnf-cache" \
|
|
--setopt=install_weak_deps=False \
|
|
--setopt=tsflags=nodocs \
|
|
install golang-bin
|
|
find "$WORKSPACE/.dnf-cache" -type f -name '*.rpm' -delete 2>/dev/null || true
|
|
bash ./build.sh
|
|
# The backend is static, so free the compiler before installing rpmbuild.
|
|
dnf -y --setopt=system_cachedir="$WORKSPACE/.dnf-cache" remove golang-bin || true
|
|
find "$WORKSPACE/.dnf-cache" -type f -name '*.rpm' -delete 2>/dev/null || true
|
|
df -h /
|
|
- name: Build RPM in low-disk mode
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
dnf -y \
|
|
--setopt=system_cachedir="$WORKSPACE/.dnf-cache" \
|
|
--setopt=install_weak_deps=False \
|
|
--setopt=tsflags=nodocs \
|
|
install rpm-build
|
|
find "$WORKSPACE/.dnf-cache" -type f -name '*.rpm' -delete 2>/dev/null || true
|
|
bash ./packaging/build-rpm.sh
|
|
VERSION="$(tr -d '[:space:]' < VERSION)"
|
|
rpm -qpi "dist/citizen-launcher-${VERSION}-1.linux.x86_64.rpm"
|
|
df -h /
|
|
- name: Upload RPM to Gitea
|
|
shell: bash
|
|
env:
|
|
CITIZEN_JSON_BACKEND: jq
|
|
run: |
|
|
set -euo pipefail
|
|
VERSION="$(tr -d '[:space:]' < VERSION)"
|
|
bash ./scripts/gitea-release.sh upload "$TAG_NAME" "dist/citizen-launcher-${VERSION}-1.linux.x86_64.rpm"
|
|
|
|
arch:
|
|
needs: prepare-release
|
|
runs-on: ubuntu-latest
|
|
container: archlinux:base-devel
|
|
env:
|
|
CITIZEN_LAUNCHER_RELEASE_REPO: gitea:${{ gitea.api_url }}/repos/${{ gitea.repository }}
|
|
WORKSPACE: ${{ gitea.workspace }}
|
|
steps:
|
|
- name: Build dependencies
|
|
run: pacman -Syu --noconfirm --needed git go zstd curl python
|
|
- uses: actions/checkout@v4
|
|
- name: Verify tag and build Arch package
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
VERSION="$(tr -d '[:space:]' < VERSION)"
|
|
test "$TAG_NAME" = "v${VERSION}"
|
|
bash ./build.sh
|
|
useradd -m builder
|
|
chown -R builder:builder "$WORKSPACE"
|
|
su builder -s /bin/bash -c "cd '$WORKSPACE' && CITIZEN_LAUNCHER_RELEASE_REPO='$CITIZEN_LAUNCHER_RELEASE_REPO' bash ./packaging/build-arch.sh"
|
|
test -s "dist/citizen-launcher-${VERSION}-1-x86_64.pkg.tar.zst"
|
|
- name: Upload Arch package to Gitea
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
VERSION="$(tr -d '[:space:]' < VERSION)"
|
|
bash ./scripts/gitea-release.sh upload "$TAG_NAME" "dist/citizen-launcher-${VERSION}-1-x86_64.pkg.tar.zst"
|
|
|
|
finalize-release:
|
|
needs: [deb-and-generic, rpm, arch]
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- name: Download release packages and create checksums
|
|
shell: bash
|
|
run: |
|
|
set -euo pipefail
|
|
rm -rf release-assets
|
|
bash ./scripts/gitea-release.sh download-assets "$TAG_NAME" release-assets
|
|
VERSION="$(tr -d '[:space:]' < VERSION)"
|
|
test -s "release-assets/citizen-launcher_${VERSION}_amd64.deb"
|
|
test -s "release-assets/citizen-launcher-${VERSION}-1.linux.x86_64.rpm"
|
|
test -s "release-assets/citizen-launcher-${VERSION}-1-x86_64.pkg.tar.zst"
|
|
test -s "release-assets/citizen-launcher-${VERSION}-linux-amd64.tar.gz"
|
|
(cd release-assets && sha256sum * | LC_ALL=C sort -k2 > SHA256SUMS.txt)
|
|
- name: Publish SHA256SUMS on Gitea release
|
|
run: bash ./scripts/gitea-release.sh upload "$TAG_NAME" release-assets/SHA256SUMS.txt
|