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