aboutsummaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
authorBruce Hill <bruce@bruce-hill.com>2026-01-02 15:10:48 -0500
committerBruce Hill <bruce@bruce-hill.com>2026-01-02 15:10:48 -0500
commit9653a7c2e53e2bc5e8f146a7d9ea1e71eed19e08 (patch)
tree7f026a142b4f8efcdbf517cc58adc97eb3b37cd5 /.github
parente4d5bf73e4ad9dc51f923a32903011edfeae2908 (diff)
parentce49f93da58d007c0a52ee82e2421adfe06012f9 (diff)
Merge branch 'dev' into constructive-reals
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/release.yml148
1 files changed, 148 insertions, 0 deletions
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 00000000..0e4f08d0
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,148 @@
+name: Release binaries
+
+on:
+ push:
+ tags:
+ - 'v*'
+
+permissions:
+ contents: write
+
+env:
+ PKGNAME: tomo
+
+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=${PKGNAME}-linux-${{ matrix.arch }}.tar.gz
+ tar -C build -czf "$FILE" ${PKGNAME}@${TAG}
+ sha256sum "$FILE" > "$FILE.sha256"
+
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v3
+ with:
+ name: linux-${{ matrix.arch }}
+ path: |
+ ${PKGNAME}-linux-${{ matrix.arch }}.tar.gz
+ ${PKGNAME}-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 gmp libunistring bdw-gc llvm binutils
+
+ - name: Build arm64
+ run: |
+ make -j
+
+ - name: Package
+ run: |
+ TAG=${GITHUB_REF_NAME}
+ tar -C build -czf ${PKGNAME}-macos-arm64.tar.gz ${PKGNAME}@${TAG}
+ shasum -a 256 ${PKGNAME}-macos-arm64.tar.gz > ${PKGNAME}-macos-arm64.tar.gz.sha256
+
+ - name: Upload artifacts
+ uses: actions/upload-artifact@v3
+ with:
+ name: macos-arm64
+ path: |
+ ${PKGNAME}-macos-arm64.tar.gz
+ ${PKGNAME}-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: release/*
+
+ 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
+