name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
permissions:
contents: read
jobs:
rust:
name: Rust
uses: so1ve/workflows/.github/workflows/rust-ci.yml@v1
with:
toolchain: stable
runs-on-matrix: '"ubuntu-latest"'
setup: .github/actions/setup-rust-ci
nix:
name: Nix
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v7
- uses: cachix/install-nix-action@v31
- run: nix fmt -- --ci
- run: nix flake check --all-systems
build:
name: Build ${{ matrix.system }}
strategy:
fail-fast: false
matrix:
include:
- system: x86_64-linux
runner: ubuntu-24.04
- system: aarch64-linux
runner: ubuntu-24.04-arm
runs-on: ${{ matrix.runner }}
steps:
- uses: actions/checkout@v7
- uses: cachix/install-nix-action@v31
- uses: cachix/cachix-action@v17
with:
name: so1ve
authToken: ${{ secrets.CACHIX_AUTH_TOKEN }}
skipPush: ${{ github.event_name == 'pull_request' }}
- run: nix build ".#packages.${{ matrix.system }}.default" --print-build-logs
binary:
name: Binary ${{ matrix.target }}
strategy:
fail-fast: false
matrix:
include:
- target: x86_64-unknown-linux-gnu
runner: ubuntu-24.04
- target: aarch64-unknown-linux-gnu
runner: ubuntu-24.04-arm
runs-on: ${{ matrix.runner }}
steps:
- uses: so1ve/workflows/setup-rust@v1
with:
toolchain: stable
- uses: ./.github/actions/setup-rust-ci
- run: cargo build --locked --release
- run: mv target/release/latchshot "latchshot-${{ matrix.target }}"
- uses: actions/upload-artifact@v7
with:
name: latchshot-${{ matrix.target }}
path: latchshot-${{ matrix.target }}
if-no-files-found: error