- Update PKGBUILD to support both x86_64 and aarch64 architectures - Use architecture-specific sources and checksums - Update AUR workflow to download and checksum both tarballs - Add smart wait logic for both release assets (max 10 minutes) - Homologize workflow naming for consistency - Package function now detects architecture and uses correct tarball AUR users on ARM64 devices (Raspberry Pi, etc.) can now install qbz-bin.
148 lines
5.3 KiB
YAML
148 lines
5.3 KiB
YAML
name: release-aur
|
|
|
|
on:
|
|
release:
|
|
types: [published]
|
|
workflow_dispatch:
|
|
inputs:
|
|
version:
|
|
description: "Version to publish (e.g. 1.0.0)"
|
|
required: true
|
|
type: string
|
|
|
|
jobs:
|
|
update-aur:
|
|
runs-on: ubuntu-latest
|
|
needs: []
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Determine version
|
|
id: version
|
|
run: |
|
|
if [[ "${{ github.event_name }}" == "release" ]]; then
|
|
VERSION="${{ github.event.release.tag_name }}"
|
|
VERSION="${VERSION#v}"
|
|
else
|
|
VERSION="${{ inputs.version }}"
|
|
fi
|
|
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Wait for release assets
|
|
if: github.event_name == 'release'
|
|
env:
|
|
VERSION: ${{ steps.version.outputs.version }}
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
run: |
|
|
echo "Waiting for release assets to be available..."
|
|
MAX_WAIT=600
|
|
INTERVAL=30
|
|
ELAPSED=0
|
|
|
|
while [ $ELAPSED -lt $MAX_WAIT ]; do
|
|
echo "Checking for release assets (${ELAPSED}s elapsed)..."
|
|
|
|
# Check if both tarballs exist
|
|
AMD64_EXISTS=$(curl -sI "https://github.com/vicrodh/qbz/releases/download/v${VERSION}/qbz_${VERSION}_amd64.tar.gz" | head -n 1 | grep -q "200 OK" && echo "true" || echo "false")
|
|
AARCH64_EXISTS=$(curl -sI "https://github.com/vicrodh/qbz/releases/download/v${VERSION}/qbz_${VERSION}_aarch64.tar.gz" | head -n 1 | grep -q "200 OK" && echo "true" || echo "false")
|
|
|
|
if [ "$AMD64_EXISTS" = "true" ] && [ "$AARCH64_EXISTS" = "true" ]; then
|
|
echo "Both release assets are available!"
|
|
break
|
|
fi
|
|
|
|
echo "Waiting for assets... (amd64: $AMD64_EXISTS, aarch64: $AARCH64_EXISTS)"
|
|
sleep $INTERVAL
|
|
ELAPSED=$((ELAPSED + INTERVAL))
|
|
done
|
|
|
|
if [ $ELAPSED -ge $MAX_WAIT ]; then
|
|
echo "Timeout waiting for release assets"
|
|
exit 1
|
|
fi
|
|
|
|
- name: Download release tarballs and get checksums
|
|
id: checksums
|
|
env:
|
|
VERSION: ${{ steps.version.outputs.version }}
|
|
run: |
|
|
# Download x86_64 tarball
|
|
AMD64_URL="https://github.com/vicrodh/qbz/releases/download/v${VERSION}/qbz_${VERSION}_amd64.tar.gz"
|
|
echo "Downloading: $AMD64_URL"
|
|
curl -fsSL -o /tmp/qbz_amd64.tar.gz "$AMD64_URL"
|
|
SHA256_AMD64=$(sha256sum /tmp/qbz_amd64.tar.gz | cut -d' ' -f1)
|
|
echo "sha256_amd64=$SHA256_AMD64" >> "$GITHUB_OUTPUT"
|
|
echo "x86_64 Checksum: $SHA256_AMD64"
|
|
|
|
# Download aarch64 tarball
|
|
AARCH64_URL="https://github.com/vicrodh/qbz/releases/download/v${VERSION}/qbz_${VERSION}_aarch64.tar.gz"
|
|
echo "Downloading: $AARCH64_URL"
|
|
curl -fsSL -o /tmp/qbz_aarch64.tar.gz "$AARCH64_URL"
|
|
SHA256_AARCH64=$(sha256sum /tmp/qbz_aarch64.tar.gz | cut -d' ' -f1)
|
|
echo "sha256_aarch64=$SHA256_AARCH64" >> "$GITHUB_OUTPUT"
|
|
echo "aarch64 Checksum: $SHA256_AARCH64"
|
|
|
|
- name: Setup SSH for AUR
|
|
env:
|
|
AUR_SSH_PRIVATE_KEY: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
|
|
run: |
|
|
mkdir -p ~/.ssh
|
|
echo "$AUR_SSH_PRIVATE_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 -t ed25519 aur.archlinux.org >> ~/.ssh/known_hosts
|
|
|
|
- name: Clone AUR repo
|
|
run: |
|
|
git clone ssh://aur@aur.archlinux.org/qbz-bin.git /tmp/aur-qbz-bin
|
|
|
|
- name: Update PKGBUILD
|
|
env:
|
|
VERSION: ${{ steps.version.outputs.version }}
|
|
SHA256_AMD64: ${{ steps.checksums.outputs.sha256_amd64 }}
|
|
SHA256_AARCH64: ${{ steps.checksums.outputs.sha256_aarch64 }}
|
|
run: |
|
|
cd /tmp/aur-qbz-bin
|
|
|
|
# Copy PKGBUILD from main repo (source of truth)
|
|
cp ${{ github.workspace }}/packaging/aur/PKGBUILD .
|
|
|
|
# Update version
|
|
sed -i "s/^pkgver=.*/pkgver=${VERSION}/" PKGBUILD
|
|
|
|
# Reset pkgrel to 1 for new version
|
|
sed -i "s/^pkgrel=.*/pkgrel=1/" PKGBUILD
|
|
|
|
# Update checksums for both architectures
|
|
sed -i "s/^sha256sums_x86_64=.*/sha256sums_x86_64=('${SHA256_AMD64}')/" PKGBUILD
|
|
sed -i "s/^sha256sums_aarch64=.*/sha256sums_aarch64=('${SHA256_AARCH64}')/" PKGBUILD
|
|
|
|
echo "=== Updated PKGBUILD ==="
|
|
cat PKGBUILD
|
|
|
|
- name: Generate .SRCINFO
|
|
run: |
|
|
cd /tmp/aur-qbz-bin
|
|
docker run --rm -v "$PWD":/pkg -w /pkg -e HOST_UID=$(id -u) -e HOST_GID=$(id -g) archlinux:latest bash -c "
|
|
pacman -Sy --noconfirm pacman-contrib sudo
|
|
useradd -m builder
|
|
chown -R builder:builder /pkg
|
|
sudo -u builder makepkg --printsrcinfo > .SRCINFO
|
|
chown -R \$HOST_UID:\$HOST_GID /pkg
|
|
"
|
|
cat .SRCINFO
|
|
|
|
- name: Commit and push to AUR
|
|
env:
|
|
VERSION: ${{ steps.version.outputs.version }}
|
|
run: |
|
|
cd /tmp/aur-qbz-bin
|
|
git config user.name "GitHub Actions"
|
|
git config user.email "actions@github.com"
|
|
git add PKGBUILD .SRCINFO
|
|
git commit -m "Update to v${VERSION}"
|
|
git push
|