Skip to content

chore(CI): add step to publish release to AUR #295

chore(CI): add step to publish release to AUR

chore(CI): add step to publish release to AUR #295

Workflow file for this run

# Build and publish a release of OpenGamepadUI using semantic-release whenever
# changes are merged into main.
name: "🎉 Release"
on:
push:
branches:
- main
- v0.x
- v1.x
paths-ignore:
- README.md
- "docs/**"
env:
IMAGE_NAME: ghcr.io/shadowblip/opengamepadui-builder
# Jobs to run
jobs:
release:
name: 🎉 Publish to GitHub
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
with:
fetch-depth: 0
token: ${{ secrets.CI_GITHUB_TOKEN }}
- name: Setup Node.js
uses: actions/setup-node@v1
with:
node-version: "20"
- name: Install Dependencies
run: npm install @semantic-release/exec @google/semantic-release-replace-plugin @semantic-release/git
- name: Save the signing key to sign update packs
env:
SIGNING_KEY: ${{ secrets.SIGNING_KEY }}
run: |
echo "$SIGNING_KEY" > assets/crypto/keys/opengamepadui.key
- name: Release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: make release
# In ".releaserc.yaml" a step is defined to write the release version to
# ".version.txt" upon successful release. This step checks to see if that
# exists to determine if the other jobs need to run.
- id: status
name: Set release status
shell: bash
run: |
if [ -f .version.txt ]; then
echo "was_released=yes" >> "$GITHUB_OUTPUT"
else
echo "was_released=no" >> "$GITHUB_OUTPUT"
fi
# Upload the package build for the AUR publish step
- name: Upload PKGBUILD
uses: actions/upload-artifact@v4
if: steps.status.outputs.was_released == 'yes'
with:
name: PKGBUILD
path: ./package/archlinux/PKGBUILD
if-no-files-found: error
- name: Upload Release Version
uses: actions/upload-artifact@v4
if: steps.status.outputs.was_released == 'yes'
with:
name: version.txt
path: .version.txt
if-no-files-found: error
include-hidden-files: true
outputs:
should_publish: ${{ steps.status.outputs.was_released }}
publish-docs:
name: 📔 Publish documentation
needs: release
if: needs.release.outputs.should_publish == 'yes'
runs-on: ubuntu-latest
steps:
- name: Trigger documentation generation
run: |
curl -L -X POST \
-H "Accept: application/vnd.github+json" \
-H 'Authorization: Bearer ${{ secrets.DISPATCH_KEY }}' \
-H "X-GitHub-Api-Version: 2022-11-28" \
https://api.github.com/repos/ShadowBlip/OpenGamepadUI/dispatches \
--data '{"event_type": "Trigger Workflow", "client_payload": { "repository": "'"$GITHUB_REPOSITORY"'" }}'
publish-to-aur:
name: 🐧 Publish to AUR
needs: release
if: needs.release.outputs.should_publish == 'yes'
runs-on: ubuntu-latest
steps:
- name: Download PKGBUILD
uses: actions/download-artifact@v4
with:
name: PKGBUILD
- name: Download Release Version
uses: actions/download-artifact@v4
with:
name: version.txt
- name: Setup SSH
uses: MrSquaare/ssh-setup-action@v3
with:
host: aur.archlinux.org
private-key: ${{ secrets.AUR_SSH_KEY }}
- name: Checkout AUR bin
run: git clone ssh://[email protected]/opengamepadui-bin.git
- name: Copy PKGBUILD to bin repo
run: cp ./PKGBUILD opengamepadui-bin/
- name: Build bin package
working-directory: opengamepadui-bin
run: make in-docker
- name: Commit and publish bin package
shell: bash
working-directory: opengamepadui-bin
run: |
git config user.name "github-actions[bot]"
git config user.email "shadowblip+github-actions[bot]@users.noreply.github.com"
git add .SRCINFO PKGBUILD
git commit -m "Update to $(grep '^pkgver=' PKGBUILD | cut -d'=' -f2)"
git push origin master