Skip to content

joshka/github-workflows

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 

Repository files navigation

GitHub workflows

This repository contains a collection of reusable GitHub workflows for use in Rust projects.

Usage

  • Fork this repo to your own user.
  • In your application or library crate, add 3 files pointing to your fork.
  • Copy the contents below and change the username (If you skip this step, any changes to this template will directly affect your builds).
    • .github/workflows/check.yml
    • .github/workflows/test.yml
    • .github/workflows/release-plz.yml
  • Follow the instructions on each of the workflows to set the right settings

Rust Check

rust-check.yml

  • formatting using rustfmt
  • lints using clippy and rs-clippy-check
  • docs (using nightly)
  • msrv
# .github/workflows/check.yml
on:
  push:
    branches:
      - main
  pull_request:

jobs:
  check:
    permissions:
      checks: write
    uses: joshka/github-workflows/.github/workflows/rust-check.yml@main
    with:
      msrv: 1.76.0 # this is optional defaults to 1.56.0

Rust Test

rust-test.yml

Runs tests:

  • ubuntu with stable and beta
  • mac / windows with stable
  • minimal versions
  • upload coverage to codecov.io (requires CODECOV_TOKEN to be added to the repository secrets)
# .github/workflows/test.yml
on:
  push:
    branches:
      - main
  pull_request:

jobs:
  test:
    uses: joshka/github-workflows/.github/workflows/rust-test.yml@main
    with:
      crate_type: lib # (optional) change to bin to avoid running cargo test --doc
    secrets:
      CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}

Rust Release-plz

rust-release-plz.yml

Publishes the crate using Release-plz. This is pretty neat, it automatically creates or updates a release PR every time you push to main. Merging the PR automatically releases your crate.

Required Settings:

  • Settings | Actions | General | Allow GitHub Actions to create and approve pull requests:
    ticked
  • Settings | Secrets and Variables | Actions | Repository Secret | CARGO_REGISTRY_TOKEN:
    set to value from https://crates.io/settings/tokens
# .github/workflows/release-plz.yml
permissions:
  pull-requests: write
  contents: write

on:
  push:
    branches:
      - main
jobs:
  release-plz:
    uses: joshka/github-workflows/.github/workflows/rust-release-plz.yml@main
    permissions:
      pull-requests: write
      contents: write
    secrets:
      CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published