Files
jbergner 7bc0c63743
Citizen Launcher CI / arch-package (push) Failing after 22s
Citizen Launcher CI / rpm-package (push) Failing after 29s
Citizen Launcher CI / verify (push) Successful in 2m50s
v1.1.3
2026-09-01 20:17:04 +02:00

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