name: Release
on:
release:
types: [published]
workflow_dispatch:
permissions:
contents: write
env:
CARGO_TERM_COLOR: always
jobs:
build:
name: Build ${{ matrix.name }}
if: github.event_name == 'workflow_dispatch' || !github.event.release.prerelease
runs-on: ${{ matrix.runner }}
strategy:
fail-fast: false
matrix:
include:
- name: aarch64-macos
runner: macos-14
target: aarch64-apple-darwin
bottle_tag: arm64_sonoma
archive: tar.gz
- name: x86_64-linux
runner: ubuntu-22.04
target: x86_64-unknown-linux-gnu
bottle_tag: x86_64_linux
archive: tar.gz
- name: aarch64-linux
runner: ubuntu-22.04-arm
target: aarch64-unknown-linux-gnu
archive: tar.gz
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Build release binary
run: cargo build --release --target ${{ matrix.target }}
- name: Get version
id: version
shell: bash
run: |
VERSION="${GITHUB_REF_NAME#v}"
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
- name: Package binary (unix)
if: matrix.archive == 'tar.gz'
run: |
cd target/${{ matrix.target }}/release
tar czf ../../../agentic_ssh-${{ github.ref_name }}-${{ matrix.name }}.tar.gz agentic_ssh
cd ../../..
- name: Upload binary archive (unix)
if: matrix.archive == 'tar.gz' && github.event_name == 'release'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
shell: bash
run: gh release upload ${{ github.ref_name }} agentic_ssh-${{ github.ref_name }}-${{ matrix.name }}.${{ matrix.archive }} --clobber