@rraval's reusable GitHub workflows
Repository for common workflows so I only have to bother getting it right once.
.github/workflows/rust_dev.yml
A comprehensive set of Rust checks intended to catch errors during development:
- Runs the test suite with
cargo test. - Collects source-based coverage with
grcovand uploads it to Coveralls. - Reports errors with
cargo check. - Lints with
clippy. - Checks formatting with
rustfmt.
Usage
Add a workflow file to your repository like .github/workflows/dev.yml with the following contents:
name: Dev
on: [push, pull_request]
jobs:
all:
uses: rraval/workflows/.github/workflows/rust_dev.yml@master
.github/workflows/rust_publish.yml
Publishes the crate to crates.io with cargo publish.
Usage
Navigate to https://crates.io/settings/tokens and generate a new token specific to your repository.
Follow the GitHub instructions for creating a repository secret and create a secret named CRATES_IO_TOKEN with the value from https://crates.io/settings/tokens.
Add a workflow file to your repository like .github/workflows/publish.yml with the following contents:
name: Publish
on:
release:
types: [published]
jobs:
all:
uses: rraval/workflows/.github/workflows/rust_publish.yml@master
secrets:
CRATES_IO_TOKEN: ${{ secrets.CRATES_IO_TOKEN }}
.github/workflows/rust_release_binary.yml
Builds Rust binaries (Linux and Mac OS X) and uploads them as artifacts to a GitHub release.
Usage
Add a workflow file to your repository like .github/workflows/release.yml with the following contents, replacing <NAME-OF-YOUR-CRATE-BINARY> with the binary to build as specified in the Cargo.toml (if you're not doing anything fancy, this is usually the same as the Cargo package name).
name: Release
on:
release:
types: [published]
jobs:
main:
uses: rraval/workflows/.github/workflows/rust_release_binary.yml@master
with:
CARGO_BINARY_NAME: <NAME-OF-YOUR-CRATE-BINARY>