name: release
on:
push:
branches:
- '!master'
tags:
- 'v*'
- '!v*-*'
env:
RUST_BACKTRACE: 1
jobs:
build-linux:
name: Build (linux)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Install target
run: rustup update && rustup target add x86_64-unknown-linux-musl
- name: Build
run: cargo build --verbose --release --target x86_64-unknown-linux-musl
- name: Upload action assest
uses: actions/upload-artifact@v7
with:
name: bca-x86_64-linux
path: target/x86_64-unknown-linux-musl/release/bca
build-windows:
name: Build (windows)
runs-on: windows-latest
steps:
- uses: actions/checkout@v6
- name: Build
run: cargo build --verbose --release
- name: Upload action assest
uses: actions/upload-artifact@v7
with:
name: bca-x86_64-windows.exe
path: target/release/bca.exe
build-macos:
name: Build (macos)
runs-on: macos-latest
steps:
- uses: actions/checkout@v6
- name: Install target
run: rustup update && rustup target add aarch64-apple-darwin
- name: Build Intel
run: cargo build --verbose --release
- name: Build Apple Silicon
run: cargo build --verbose --release --target aarch64-apple-darwin
- name: Upload action assest Intel
uses: actions/upload-artifact@v7
with:
name: bca-x86_64-macos
path: target/release/bca
- name: Upload action assest Apple Silicon
uses: actions/upload-artifact@v7
with:
name: bca-aarch64-macos
path: target/release/bca
release:
name: Create GitHub Release
runs-on: ubuntu-latest
needs: [build-linux, build-macos, build-windows]
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Get Tag
id: get-release-version
run: echo "version=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
- name: Download Linux Artifacts
uses: actions/download-artifact@v8
with:
name: bca-x86_64-linux
- name: Download Windows Artifacts
uses: actions/download-artifact@v8
with:
name: bca-x86_64-windows.exe
- name: Download Intel Mac Artifacts
uses: actions/download-artifact@v8
with:
name: bca-x86_64-macos
- name: Download Apple Silicon Artifacts
uses: actions/download-artifact@v8
with:
name: bca-aarch64-macos
- name: Create GitHub release
uses: softprops/action-gh-release@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
tag_name: ${{ steps.get-release-version.outputs.version }}
body_path: RELEASE.md
files: |
bca-x86_64-linux
bca-x86_64-windows.exe
bca-x86_64-macos
bca-aarch64-macos
publish:
name: Publish to crates.io
runs-on: ubuntu-latest
needs: release
steps:
- uses: actions/checkout@v6
- name: Publish crate
run: cargo publish --verbose --token ${{ secrets.CARGO_PUBLISH_TOKEN }}