Skip to content

ci(check): install rust using rust toolchain file #221

ci(check): install rust using rust toolchain file

ci(check): install rust using rust toolchain file #221

Workflow file for this run

name: check
permissions:
contents: write
pull-requests: write
on:
push:
branches:
- main
- v*
pull_request:
workflow_dispatch:
env:
CARGO_REGISTRY_CRATES_IO_PROTOCOL: true
concurrency: # Spend CI time only on latest ref: https://docs.github.com/en/actions/using-jobs/using-concurrency
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
fmt:
runs-on: ubuntu-latest
name: stable / fmt
steps:
- uses: actions/checkout@v4
- name: Install stable
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
components: rustfmt
- name: cargo fmt --check
run: cargo fmt --check
clippy:
runs-on: ubuntu-latest
name: ${{ matrix.toolchain }} / clippy
permissions:
contents: read
checks: write
strategy:
fail-fast: false
matrix:
toolchain: [stable, beta]
steps:
- uses: actions/checkout@v4
- name: Install ${{ matrix.toolchain }}
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
components: clippy
- name: cargo clippy
uses: LoliGothick/[email protected]
with:
token: ${{ secrets.GITHUB_TOKEN }}
deny: warnings
doc:
runs-on: ubuntu-latest
name: nightly / doc
steps:
- name: Setup | Checkout
uses: actions/checkout@v4
with:
submodules: true
- name: Setup | Rust nightly
uses: dtolnay/rust-toolchain@nightly
- name: Setup | cargo-docs-rs
uses: dtolnay/install@cargo-docs-rs
- name: Execute | cargo docs-rs
run: cargo +nightly docs-rs
build:
name: Build binaries
strategy:
fail-fast: false
matrix:
include:
- target: x86_64-unknown-linux-gnu
os: ubuntu-latest
name: tuxmux-x86_64-unknown-linux-gnu.tar.gz
- target: aarch64-unknown-linux-gnu
os: ubuntu-latest
name: tuxmux-aarch64-unknown-linux-gnu.tar.gz
- target: x86_64-apple-darwin
os: macos-latest
name: tuxmux-x86_64-apple-darwin.tar.gz
- target: aarch64-apple-darwin
os: macos-latest
name: tuxmux-aarch64-apple-darwin.tar.gz
runs-on: ${{ matrix.os }}
steps:
- name: Setup | Checkout
uses: actions/checkout@v4
- name: Setup | Rust
uses: actions-rust-lang/setup-rust-toolchain@v1
with:
target: ${{matrix.target}}
- name: Setup | Install cross [Linux]
if: matrix.os == 'ubuntu-latest'
uses: taiki-e/install-action@v2
with:
tool: cross
- name: Build | Build [Cargo]
if: matrix.os != 'ubuntu-latest'
run: cargo build --locked --target ${{ matrix.target }}
- name: Build | Build [Cross]
if: matrix.os == 'ubuntu-latest'
run: cross build --locked --target ${{ matrix.target }}
release_please:
name: Release Please
runs-on: ubuntu-latest
if: |
github.repository == 'edeneast/tuxmux'
&& (github.event_name == 'push' || github.event_name == 'workflow_dispatch')
outputs:
release_created: ${{ steps.release.outputs.release_created }}
tag_name: ${{ steps.release.outputs.tag_name }}
steps:
- uses: googleapis/release-please-action@v4
id: release
with:
token: ${{ secrets.GITHUB_TOKEN }}
config-file: .github/release-please-config.json
manifest-file: .github/release-please-manifest.json
target-branch: ${{ github.ref_name }}