Files
noctalia-shell/.github/workflows/update-aur-package.yml
T

110 lines
3.4 KiB
YAML

name: Update AUR Package
on:
push:
tags:
- 'v*'
workflow_dispatch:
jobs:
aur-sync:
name: Sync PKGBUILD with release
runs-on: ubuntu-latest
container:
image: archlinux:latest
defaults:
run:
shell: bash
env:
AUR_REPO: ssh://aur@aur.archlinux.org/noctalia-shell.git
GIT_SSH_COMMAND: ssh -i /root/.ssh/id_aur -o StrictHostKeyChecking=yes -o IdentitiesOnly=yes -o ServerAliveInterval=15 -o ServerAliveCountMax=4
PKGNAME: noctalia-shell
AUR_LINK: https://aur.archlinux.org/packages/noctalia-shell
steps:
- name: Install dependencies
run: |
set -euo pipefail
pacman -Syu --noconfirm git base-devel pacman-contrib openssh
- name: Create build user
run: |
set -euo pipefail
useradd -m builduser
echo 'builduser ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
- name: Configure SSH
env:
AUR_SSH_PRIVATE_KEY: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
run: |
set -euo pipefail
mkdir -p /root/.ssh
chmod 700 /root/.ssh
printf '%s\n' "$AUR_SSH_PRIVATE_KEY" > /root/.ssh/id_aur
chmod 600 /root/.ssh/id_aur
ssh-keyscan aur.archlinux.org >> /root/.ssh/known_hosts
chmod 600 /root/.ssh/known_hosts
- name: Determine version
id: vars
env:
TAG_NAME: ${{ github.ref_name }}
run: |
set -euo pipefail
PKGVER="${TAG_NAME#v}"
echo "pkgver=$PKGVER" >> "$GITHUB_OUTPUT"
- name: Clone AUR repository
run: |
set -euo pipefail
git clone "$AUR_REPO" "$GITHUB_WORKSPACE/aur"
- name: Update PKGBUILD
env:
PKGVER: ${{ steps.vars.outputs.pkgver }}
working-directory: ${{ github.workspace }}/aur
run: |
set -euo pipefail
sed -i "s/^pkgver=.*/pkgver=${PKGVER}/" PKGBUILD
sed -i "s/^pkgrel=.*/pkgrel=1/" PKGBUILD
- name: Refresh checksums and metadata
env:
AUR_DIR: ${{ github.workspace }}/aur
run: |
set -euo pipefail
chown -R builduser:builduser "$AUR_DIR"
su - builduser -c "cd $AUR_DIR && updpkgsums"
su - builduser -c "cd $AUR_DIR && makepkg --printsrcinfo > .SRCINFO"
- name: Commit and push changes
env:
PKGVER: ${{ steps.vars.outputs.pkgver }}
working-directory: ${{ github.workspace }}/aur
run: |
set -euo pipefail
git config --global --add safe.directory "$PWD"
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
if [[ -n "$(git status --porcelain)" ]]; then
git add PKGBUILD .SRCINFO
git commit -m "chore(package): release ${PKGVER}"
git push origin HEAD
else
echo "No updates necessary."
fi
- name: Summarize update
env:
PKGNAME: noctalia-shell
PKGVER: ${{ steps.vars.outputs.pkgver }}
AUR_LINK: https://aur.archlinux.org/packages/noctalia-shell
run: |
set -euo pipefail
{
echo "## AUR Update"
echo ""
echo "- Package: ${PKGNAME}"
echo "- Updated version: ${PKGVER}"
echo "- AUR page: ${AUR_LINK}"
} >> "$GITHUB_STEP_SUMMARY"