name: release
on:
push:
tags:
- "v*"
permissions:
contents: write
jobs:
build:
name: build (${{ matrix.target }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
include:
- target: x86_64-unknown-linux-gnu
os: ubuntu-latest
- target: aarch64-unknown-linux-gnu
os: ubuntu-24.04-arm
- target: aarch64-apple-darwin
os: macos-latest
steps:
- uses: actions/checkout@v4
- name: Install Linux clipboard deps
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y \
libxcb1-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev \
libxkbcommon-dev
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- name: Build
run: cargo build --release --locked --target ${{ matrix.target }}
- name: Package
shell: bash
run: |
version="${GITHUB_REF_NAME#v}"
name="vorto-${version}-${{ matrix.target }}"
mkdir -p "dist/${name}"
cp "target/${{ matrix.target }}/release/vorto" "dist/${name}/"
cp README.md LICENSE-MIT LICENSE-APACHE "dist/${name}/"
tar -C dist -czf "dist/${name}.tar.gz" "${name}"
- name: Upload to release
uses: softprops/action-gh-release@v2
with:
files: dist/*.tar.gz
publish:
name: publish to crates.io
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Linux clipboard deps
run: |
sudo apt-get update
sudo apt-get install -y \
libxcb1-dev libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev \
libxkbcommon-dev
- name: Setup Rust
uses: dtolnay/rust-toolchain@stable
- name: Publish
run: cargo publish --locked
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}