main
Download
151 lines 3.8 KiBYAMLModified 2025-12-23 raw
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