diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml new file mode 100644 index 0000000..70918b3 --- /dev/null +++ b/.github/workflows/rust.yml @@ -0,0 +1,67 @@ +name: Rust + +permissions: + pull-requests: write + contents: write + +on: + push: + branches: [ main ] + pull_request: + +env: + CARGO_TERM_COLOR: always + RUSTFLAGS: '-D warnings' + CARGO_INCREMENTAL: 0 + RUST_BACKTRACE: short + +defaults: + run: + working-directory: ./crate + +jobs: + clippy: + runs-on: ubuntu-20.04 + + steps: + - uses: actions/checkout@v2 + - name: Run clippy + run: cargo clippy --benches -- -D clippy::all + + cargo-fmt: + runs-on: ubuntu-20.04 + + steps: + - uses: actions/checkout@v2 + - name: Run cargo fmt + run: cargo fmt --check + + # there're sometimes warnings, which signal, that the generated doc + # won't look as expected, when rendered, and sometimes errors, which will prevent doc from being + # generated at release time altogether. + cargo-doc: + runs-on: ubuntu-20.04 + + steps: + - uses: actions/checkout@v2 + - name: run cargo doc + run: RUSTDOCFLAGS="-D warnings" cargo doc + + release-plz: + runs-on: ubuntu-latest + needs: [clippy, cargo-fmt, cargo-doc] + if: github.ref == 'refs/heads/master' + steps: + - name: Checkout repository + uses: actions/checkout@v3 + with: + fetch-depth: 0 + token: ${{ secrets.MY_GITHUB_TOKEN }} + - name: Install Rust toolchain + uses: dtolnay/rust-toolchain@stable + - name: Run release-plz + uses: MarcoIeni/release-plz-action@v0.5 + env: + # https://release-plz.ieni.dev/docs/github/trigger + GITHUB_TOKEN: ${{ secrets.MY_GITHUB_TOKEN }} + CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}