Skip to content

Commit

Permalink
GitHub stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
jwodder committed Oct 29, 2023
1 parent a89079e commit bb5a390
Show file tree
Hide file tree
Showing 2 changed files with 175 additions and 0 deletions.
29 changes: 29 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
version: 2
updates:
- package-ecosystem: cargo
directory: /
allow:
- dependency-type: all
schedule:
interval: weekly
commit-message:
prefix: "[cargo]"
include: scope
groups:
deps:
patterns:
- "*"
labels:
- dependencies
- d:cargo

- package-ecosystem: github-actions
directory: /
schedule:
interval: weekly
commit-message:
prefix: "[gh-actions]"
include: scope
labels:
- dependencies
- d:github-actions
146 changes: 146 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
name: Test

on:
push:
branches-ignore:
- 'dependabot/**'
pull_request:
schedule:
- cron: '0 12 * * *'

concurrency:
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.ref_name }}
cancel-in-progress: true

jobs:
test:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
toolchain:
- minimal
- stable
- beta
- nightly
include:
- os: macos-latest
toolchain: stable
- os: windows-latest
toolchain: stable
steps:
- name: Check out repository
uses: actions/checkout@v4

- name: Install Rust
if: matrix.toolchain != 'minimal'
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.toolchain }}

- name: Determine minimal supported Rust
if: matrix.toolchain == 'minimal'
id: minimal-version
run: |
rust_version="$(cargo metadata --no-deps --format-version=1 | jq -r '.packages[0].rust_version')"
echo "msrv=$rust_version" >> "$GITHUB_OUTPUT"
- name: Install minimal supported Rust
if: matrix.toolchain == 'minimal'
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ steps.minimal-version.outputs.msrv }}

- name: Activate cache
if: github.actor != 'dependabot[bot]'
uses: Swatinem/rust-cache@v2

- name: Install cargo-hack
uses: taiki-e/install-action@cargo-hack

- name: Build crate
run: cargo hack --each-feature --exclude-features examples build --all-targets --verbose

- name: Test crate
run: cargo hack --each-feature --exclude-features examples test --verbose

coverage:
# This is separate from the main tests because cargo-llvm-cov doesn't run
# doctests.
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4

- name: Install Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
components: llvm-tools-preview

- name: Activate cache
if: github.actor != 'dependabot[bot]'
uses: Swatinem/rust-cache@v2

- name: Install cargo-llvm-cov
uses: taiki-e/install-action@v2
with:
tool: cargo-llvm-cov

- name: Test with coverage
run: cargo llvm-cov --all-features --lcov --output-path lcov.info

- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
with:
files: lcov.info
fail_ci_if_error: false

lint:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4

- name: Install Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
components: clippy, rustfmt

- name: Activate cache
if: github.actor != 'dependabot[bot]'
uses: Swatinem/rust-cache@v2

- name: Install cargo-hack
uses: taiki-e/install-action@cargo-hack

- name: Check code
run: cargo hack --each-feature clippy --all-targets -- -Dwarnings

- name: Check formatting
run: cargo fmt --check

docs:
runs-on: ubuntu-latest
steps:
- name: Check out repository
uses: actions/checkout@v4

- name: Install nightly Rust
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly

- name: Activate cache
if: github.actor != 'dependabot[bot]'
uses: Swatinem/rust-cache@v2

- name: Check docs
run: cargo doc --no-deps --all-features
env:
RUSTDOCFLAGS: -Dwarnings

# vim:set et sts=2:

0 comments on commit bb5a390

Please sign in to comment.