[Enhancement] CI/CD: AUR Deploy Script (#391, thanks @JohnnyCrazy)

* Added script for automatic AUR release & added steps in .drone.yml

* Don't run AUR release before actual release

* Switch to GitHub Actions

* Try the 'container' setting and checkout repo first

* Readable deploy-aur.sh script, final draft

* Revert changes in .drone.yml

* GITHUB_REF needs to be stripped for the pre-release script

* Introduce COMMIT_REF on top of script, so it can be modified for both type of releases

* Adjust names to new k3d AUR account
pull/395/head
Jonas Dellinger 4 years ago committed by GitHub
parent 8612b76577
commit e5660f4b1f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 24
      .github/workflows/aur-prerelease.yml
  2. 23
      .github/workflows/aur-release.yml
  3. 54
      deploy-aur.sh

@ -0,0 +1,24 @@
name: AUR Prerelease
on:
release:
types: [prereleased]
jobs:
aur-pre-release:
runs-on: ubuntu-latest
container: archlinux:20200705
steps:
- name: Checkout Project
uses: actions/checkout@v1
- name: Publish Pre-Release to AUR
run: |
# AUR Packages are not allowed to use - in the package version. its used to combine pkgver and pkgrel
export COMMIT_REF=${GITHUB_REF/-/_}
./deploy-aur.sh
env:
PACKAGE_NAME: rancher-k3d-beta-bin
COMMIT_USERNAME: Travis CI
COMMIT_EMAIL: iwilltry42+k3d@gmail.com
COMMIT_MESSAGE: "[CI] Updated to $NEW_RELEASE"
SSH_PRIVATE_KEY: ${{ secrets.AUR_PRIVATE_KEY }}

@ -0,0 +1,23 @@
name: AUR Release
on:
release:
types: [released]
jobs:
aur-release:
runs-on: ubuntu-latest
container: archlinux:20200705
steps:
- name: Checkout Project
uses: actions/checkout@v1
- name: Publish Release to AUR
run: |
export COMMIT_REF=$GITHUB_REF
./deploy-aur.sh
env:
PACKAGE_NAME: rancher-k3d-bin
COMMIT_USERNAME: Travis CI
COMMIT_EMAIL: iwilltry42+k3d@gmail.com
COMMIT_MESSAGE: "[CI] Updated to $NEW_RELEASE"
SSH_PRIVATE_KEY: ${{ secrets.AUR_PRIVATE_KEY }}

@ -0,0 +1,54 @@
#!/bin/bash
set -e
# Setup base system
pacman -Syu --noconfirm openssh git gettext binutils
sed -i "s/INTEGRITY_CHECK=.*$/INTEGRITY_CHECK=(sha256)/" /etc/makepkg.conf
useradd -ms /bin/bash aur
su -m aur <<'EOSU'
set -e
# Configuration
export HOME=/home/aur
export REPO_URL="ssh://aur@aur.archlinux.org/$PACKAGE_NAME.git"
export NEW_RELEASE="${COMMIT_REF##*/v}"
export COMMIT_MESSAGE="$(echo $COMMIT_MESSAGE | envsubst)"
echo "---------------- AUR Package version $PACKAGE_NAME/$NEW_RELEASE ----------------"
# SSH & GIT Setup
mkdir "$HOME/.ssh" && chmod 700 "$HOME/.ssh"
ssh-keyscan -t ed25519 aur.archlinux.org >> "$HOME/.ssh/known_hosts"
echo -e "$SSH_PRIVATE_KEY" | base64 -d > "$HOME/.ssh/id_rsa"
chmod 600 "$HOME/.ssh/id_rsa"
git config --global user.name "$COMMIT_USERNAME"
git config --global user.email "$COMMIT_EMAIL"
# Clone AUR Package
cd /tmp
echo "$REPO_URL"
git clone "$REPO_URL"
cd "$PACKAGE_NAME"
# Generate a dummy PKGBUILD so we can grab the latest releases SHA256SUMS
cat PKGBUILD.template | envsubst '$NEW_RELEASE' > PKGBUILD
export SHA256_SUMS_x86_64="$(CARCH=x86_64 makepkg -g 2> /dev/null)"
echo "SHA256_SUMS_x86_64: $SHA256_SUMS_x86_64"
export SHA256_SUMS_aarch64="$(CARCH=aarch64 makepkg -g 2> /dev/null)"
echo "SHA256_SUMS_aarch64: $SHA256_SUMS_aarch64"
export SHA256_SUMS_arm="$(CARCH=arm makepkg -g 2> /dev/null)"
echo "SHA256_SUMS_arm: $SHA256_SUMS_arm"
cat PKGBUILD.template | envsubst '$NEW_RELEASE$SHA256_SUMS_x86_64$SHA256_SUMS_aarch64$SHA256_SUMS_arm' > PKGBUILD
makepkg --printsrcinfo > .SRCINFO
echo "------------- BUILD DONE ----------------"
git add PKGBUILD .SRCINFO
git commit -m "$COMMIT_MESSAGE"
git push
echo "------------- PUBLISH DONE ----------------"
EOSU
Loading…
Cancel
Save