name: Release
on:
push:
tags: ['v*']
workflow_dispatch:
permissions:
contents: write
jobs:
build:
strategy:
matrix:
include:
- os: macos-15
target: aarch64-apple-darwin
- os: macos-15-intel
target: x86_64-apple-darwin
- os: ubuntu-24.04
target: x86_64-unknown-linux-musl
- os: ubuntu-24.04-arm
target: aarch64-unknown-linux-musl
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v7
- uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Install musl tools
if: contains(matrix.target, 'linux-musl')
run: sudo apt-get update && sudo apt-get install -y musl-tools
- run: cargo build --release --locked --target ${{ matrix.target }}
- name: Package
shell: bash
run: |
name="agent-sync-${GITHUB_REF_NAME}-${{ matrix.target }}"
mkdir "$name"
cp "target/${{ matrix.target }}/release/agent-sync" README.md LICENSE "$name/"
tar -czf "$name.tar.gz" "$name"
shasum -a 256 "$name.tar.gz" > "$name.tar.gz.sha256"
- uses: actions/upload-artifact@v7
with:
name: agent-sync-${{ matrix.target }}
path: agent-sync-*.tar.gz*
publish:
if: startsWith(github.ref, 'refs/tags/v')
needs: build
runs-on: ubuntu-24.04
steps:
- uses: actions/download-artifact@v8
with:
pattern: agent-sync-*
merge-multiple: true
- name: Publish GitHub release
env:
GH_TOKEN: ${{ github.token }}
run: >-
gh release create "$GITHUB_REF_NAME" agent-sync-*.tar.gz*
--repo "$GITHUB_REPOSITORY"
--title "$GITHUB_REF_NAME"
--generate-notes