123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 | name: Release binaries
on:
push:
tags:
- 'v*'
permissions:
contents: write
jobs:
build-linux:
strategy:
matrix:
arch:
- x86_64
- aarch64
include:
- arch: x86_64
runner: ubuntu-latest
- arch: aarch64
runner: ubuntu-24.04-arm64
runs-on: ${{ matrix.runner }}
steps:
- uses: actions/checkout@v4
- name: Install deps
run: |
sudo apt-get update
sudo apt-get install -y build-essential libgmp-dev libunistring-dev libgc-dev binutils
- name: Build
run: |
make -j
- name: Package
run: |
TAG=${GITHUB_REF_NAME}
FILE=tomo-linux-${{ matrix.arch }}.tar.gz
tar -C build -czf "$FILE" tomo@${TAG}
sha256sum "$FILE" > "$FILE.sha256"
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: linux-${{ matrix.arch }}
path: |
tomo-linux-${{ matrix.arch }}.tar.gz
tomo-linux-${{ matrix.arch }}.tar.gz.sha256
build-macos:
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Install deps
run: |
brew update
brew install --quiet gmp libunistring bdw-gc llvm binutils
- name: Build arm64
run: |
make -j
- name: Package
run: |
TAG=${GITHUB_REF_NAME}
tar -C build -czf tomo-macos-arm64.tar.gz tomo@${TAG}
shasum -a 256 tomo-macos-arm64.tar.gz > tomo-macos-arm64.tar.gz.sha256
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: macos-arm64
path: |
tomo-macos-arm64.tar.gz
tomo-macos-arm64.tar.gz.sha256
upload-release:
needs: [build-linux, build-macos]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Download all artifacts
uses: actions/download-artifact@v3
with:
path: release/
- name: List artifacts
run: ls -l release/
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
files: |
tomo-linux-x86_64.tar.gz
tomo-linux-x86_64.tar.gz.sha256
tomo-linux-aarch64.tar.gz
tomo-linux-aarch64.tar.gz.sha256
tomo-macos-arm64.tar.gz
tomo-macos-arm64.tar.gz.sha256
publish-aur:
needs: upload-release
runs-on: ubuntu-latest
env:
AUR_SSH_KEY: ${{ secrets.AUR_SSH_KEY }}
steps:
- uses: actions/checkout@v4
- name: Install deps
run: |
sudo apt-get install -y pacman-contrib jq gh
- name: Set up SSH
run: |
mkdir -p ~/.ssh
echo "$AUR_SSH_KEY" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
ssh-keyscan aur.archlinux.org >> ~/.ssh/known_hosts
- name: Wait for release assets
run: |
TAG=${GITHUB_REF_NAME}
for i in $(seq 60); do
if gh release view "$TAG" --json assets \
| jq -e '[ .assets[].name ] | index("tomo-linux-x86_64.tar.gz") and index("tomo-linux-aarch64.tar.gz")' >/dev/null
then exit 0; fi
sleep 10
done
echo "Timed out waiting for release assets"
exit 1
- name: Update PKGBUILD
run: |
TAG=${GITHUB_REF_NAME#v}
sed -i "s/^_tomo_version=.*/_tomo_version=${TAG}/" PKGBUILD
updpkgsums
makepkg --printsrcinfo > .SRCINFO
git config user.name "GitHub Actions"
git config user.email "actions@github.com"
git diff --quiet || git commit -am "Release v${TAG}"
- name: Push to AUR
run: |
git push aur HEAD:master
|