From e0871f23c26045596e4d6208ce8b3c3531c2b1a5 Mon Sep 17 00:00:00 2001 From: Bendik Aagaard Lynghaug Date: Mon, 22 Jun 2026 13:56:41 +0200 Subject: [PATCH] add aur and ci release routines --- .gitea/workflows/release.yml | 132 +++++++++++++++++++++++++++++++++++ aur/PKGBUILD | 21 ++++++ release.toml | 12 ++++ 3 files changed, 165 insertions(+) create mode 100644 .gitea/workflows/release.yml create mode 100644 aur/PKGBUILD create mode 100644 release.toml diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml new file mode 100644 index 0000000..2e60740 --- /dev/null +++ b/.gitea/workflows/release.yml @@ -0,0 +1,132 @@ +name: Release + +on: + push: + tags: + - 'v*' + +env: + CARGO_TERM_COLOR: always + +jobs: + build: + strategy: + matrix: + include: + - arch: x86_64 + target: x86_64-unknown-linux-gnu + runs-on: ubuntu-latest + - arch: aarch64 + target: aarch64-unknown-linux-gnu + runs-on: aarch64 + + runs-on: ${{ matrix.runs-on }} + + steps: + - uses: actions/checkout@v4 + + - name: Install system dependencies + if: matrix.arch == 'x86_64' + run: | + sudo apt-get update + sudo apt-get install -y libncurses-dev + + - name: Install Rust stable + uses: dtolnay/rust-toolchain@stable + with: + targets: ${{ matrix.target }} + + - name: Cache cargo registry + uses: actions/cache@v3 + with: + path: ~/.cargo/registry + key: ${{ runner.os }}-${{ matrix.arch }}-cargo-${{ hashFiles('Cargo.lock') }} + + - name: Build + run: cargo build --release --target ${{ matrix.target }} + + - name: Package + run: | + TAG=${{ gitea.ref_name }} + TARBALL="spectrust-${TAG}-${{ matrix.arch }}.tar.gz" + mkdir pkg + cp target/${{ matrix.target }}/release/spectrust pkg/ + cp LICENSE pkg/ + tar -czf "${TARBALL}" -C pkg . + sha256sum "${TARBALL}" > "${TARBALL}.sha256" + echo "TARBALL=${TARBALL}" >> $GITHUB_ENV + + - name: Create release + run: | + curl -sX POST \ + -H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \ + -H "Content-Type: application/json" \ + "${{ gitea.server_url }}/api/v1/repos/${{ gitea.repository }}/releases" \ + -d "{\"tag_name\":\"${{ gitea.ref_name }}\",\"name\":\"${{ gitea.ref_name }}\"}" \ + --fail-with-body || true + + - name: Upload assets + run: | + RELEASE_ID=$(curl -s \ + -H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \ + "${{ gitea.server_url }}/api/v1/repos/${{ gitea.repository }}/releases/tags/${{ gitea.ref_name }}" \ + | jq -r '.id') + + for FILE in "${{ env.TARBALL }}" "${{ env.TARBALL }}.sha256"; do + EXISTING=$(curl -s \ + -H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \ + "${{ gitea.server_url }}/api/v1/repos/${{ gitea.repository }}/releases/${RELEASE_ID}/assets" \ + | jq -r ".[] | select(.name == \"${FILE}\") | .id") + for AID in $EXISTING; do + curl -sX DELETE \ + -H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \ + "${{ gitea.server_url }}/api/v1/repos/${{ gitea.repository }}/releases/${RELEASE_ID}/assets/${AID}" + done + + curl -sX POST \ + -H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \ + -H "Content-Type: application/octet-stream" \ + "${{ gitea.server_url }}/api/v1/repos/${{ gitea.repository }}/releases/${RELEASE_ID}/assets?name=${FILE}" \ + --data-binary "@${FILE}" --fail-with-body + done + + update-aur: + needs: build + runs-on: aarch64 + + steps: + - uses: actions/checkout@v4 + + - name: Compute checksums and update PKGBUILD + run: | + TAG=${{ gitea.ref_name }} + BASE="${{ gitea.server_url }}/${{ gitea.repository }}/releases/download/${TAG}" + + SUM_X86=$(curl -sL "${BASE}/spectrust-${TAG}-x86_64.tar.gz" | sha256sum | cut -d' ' -f1) + SUM_AARCH=$(curl -sL "${BASE}/spectrust-${TAG}-aarch64.tar.gz" | sha256sum | cut -d' ' -f1) + + sed -i "s/sha256sums_x86_64=('.*')/sha256sums_x86_64=('${SUM_X86}')/" aur/PKGBUILD + sed -i "s/sha256sums_aarch64=('.*')/sha256sums_aarch64=('${SUM_AARCH}')/" aur/PKGBUILD + + - name: Push to AUR + env: + AUR_SSH_KEY: ${{ secrets.AUR_SSH_KEY }} + run: | + install -dm700 ~/.ssh + echo "$AUR_SSH_KEY" > ~/.ssh/aur + chmod 600 ~/.ssh/aur + echo "Host aur.archlinux.org" >> ~/.ssh/config + echo " IdentityFile ~/.ssh/aur" >> ~/.ssh/config + echo " User aur" >> ~/.ssh/config + ssh-keyscan aur.archlinux.org >> ~/.ssh/known_hosts 2>/dev/null + + rm -rf /tmp/aur-spectrust + git clone ssh://aur@aur.archlinux.org/spectrust.git /tmp/aur-spectrust + cp aur/PKGBUILD /tmp/aur-spectrust/ + cd /tmp/aur-spectrust + makepkg --printsrcinfo > .SRCINFO + git config user.name "Bendik Aagaard Lynghaug" + git config user.email "bendik.lynghaug@gmail.com" + git add PKGBUILD .SRCINFO + git commit -m "Update to ${{ gitea.ref_name }}" + git push origin master diff --git a/aur/PKGBUILD b/aur/PKGBUILD new file mode 100644 index 0000000..6414662 --- /dev/null +++ b/aur/PKGBUILD @@ -0,0 +1,21 @@ +# Maintainer: Bendik Aagaard Lynghaug +pkgname=spectrust +pkgver=0.1.0 +pkgrel=1 +pkgdesc="Terminal audio spectrum analyzer using ncurses" +arch=('x86_64' 'aarch64') +url="https://prosjekt.klingenbergbygg.no/bl/spectrust" +license=('MIT') +depends=('ncurses') +provides=('spectrust') +conflicts=('spectrust-git' 'spectrust-bin') +source_x86_64=("spectrust-v${pkgver}-x86_64.tar.gz::https://prosjekt.klingenbergbygg.no/bl/spectrust/releases/download/v${pkgver}/spectrust-v${pkgver}-x86_64.tar.gz") +source_aarch64=("spectrust-v${pkgver}-aarch64.tar.gz::https://prosjekt.klingenbergbygg.no/bl/spectrust/releases/download/v${pkgver}/spectrust-v${pkgver}-aarch64.tar.gz") +sha256sums_x86_64=('SKIP') +sha256sums_aarch64=('SKIP') + +package() { + install -Dm755 spectrust "$pkgdir/usr/bin/spectrust" + + install -Dm644 LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE" +} diff --git a/release.toml b/release.toml new file mode 100644 index 0000000..1c30fae --- /dev/null +++ b/release.toml @@ -0,0 +1,12 @@ +publish = false +allow-branch = ["main"] + +[[pre-release-replacements]] +file = "aur/PKGBUILD" +search = "pkgver=.*" +replace = "pkgver={{version}}" + +[[pre-release-replacements]] +file = "aur/PKGBUILD" +search = "pkgrel=.*" +replace = "pkgrel=1"