name: Release
on:
push:
tags:
- 'v*'
env:
CARGO_TERM_COLOR: always
permissions:
contents: write
jobs:
build-linux:
name: Build Linux x86_64
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Build release binaries
run: |
cargo build --release
cargo build --release --features daemon --bin virtuoso-daemon
- name: Package binaries
run: |
TAG="${GITHUB_REF_NAME}"
mkdir -p dist
cp target/release/vcli dist/vcli-${TAG}-linux-x86_64
cp target/release/vtui dist/vtui-${TAG}-linux-x86_64
cp target/release/virtuoso-daemon dist/virtuoso-daemon-${TAG}-linux-x86_64
chmod +x dist/*
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
files: dist/*
generate_release_notes: true
body: |
See [CHANGELOG.md](https://github.com/${{ github.repository }}/blob/main/CHANGELOG.md) for details.
publish-crate:
name: Publish to crates.io
runs-on: ubuntu-latest
needs: build-linux
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Publish
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
run: |
if [ -z "$CARGO_REGISTRY_TOKEN" ]; then
echo "CARGO_REGISTRY_TOKEN not set — skipping crates.io publish"
exit 0
fi
cargo publish