build(deps): update thiserror requirement from 1.0 to 2.0 #522
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: | |
- main | |
- feat/* | |
- fix/* | |
paths-ignore: | |
- docs/** | |
- "*.md" | |
- "LICENSE" | |
tags: | |
- v** | |
pull_request: | |
paths-ignore: | |
- docs/** | |
- "*.md" | |
- "LICENSE" | |
concurrency: | |
group: ${{ github.ref }} | |
cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
env: | |
CARGO_TERM_COLOR: always | |
JAVA_VERSION: 23 | |
jobs: | |
style_rustfmt: | |
name: Style / rustfmt | |
runs-on: ubuntu-latest | |
steps: | |
- name: Setup Rust | |
run: | | |
rustup update stable \ | |
&& rustup default stable | |
- name: Setup JDK | |
uses: actions/setup-java@v4 | |
with: | |
java-version: ${{ env.JAVA_VERSION }} | |
distribution: corretto | |
- uses: actions/checkout@v4 | |
name: Checkout source code | |
- name: Check code formatting with rustfmt | |
run: cargo fmt --check | |
style_clippy_check: | |
name: Style / clippy & check | |
runs-on: ubuntu-latest | |
steps: | |
- name: Setup Rust | |
run: | | |
rustup update stable \ | |
&& rustup default stable | |
- name: Setup JDK | |
uses: actions/setup-java@v4 | |
with: | |
java-version: ${{ env.JAVA_VERSION }} | |
distribution: corretto | |
- uses: actions/checkout@v4 | |
name: Checkout source code | |
- name: Cargo Update | |
run: cargo update --verbose | |
- name: Restore Rust Build Cache | |
uses: actions/cache/restore@v4 | |
with: | |
key: cargo-build-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
cargo-build- | |
path: | | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
- run: cargo check --all-targets --all-features --verbose | |
name: Cargo check | |
- name: Run clippy | |
run: cargo clippy --no-deps --all-targets --all-features -- -D warnings | |
unit_test: | |
name: Test / unit | |
runs-on: ubuntu-latest | |
needs: [style_rustfmt, style_clippy_check] | |
steps: | |
- name: Setup Rust | |
run: | | |
rustup update stable \ | |
&& rustup default stable \ | |
&& rustup component add llvm-tools-preview | |
- name: Setup Build Tools | |
uses: taiki-e/install-action@v2 | |
with: | |
tool: cargo-llvm-cov,cargo-nextest | |
- uses: actions/checkout@v4 | |
name: Checkout source code | |
- name: Cargo Update | |
run: cargo update --verbose | |
- name: Cache Rust Build Stuff | |
uses: actions/cache@v4 | |
with: | |
key: cargo-build-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
cargo-build- | |
path: | | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
target/ | |
- name: Test | |
run: | | |
cargo llvm-cov clean --workspace | |
cargo llvm-cov nextest --all-features --no-report -E 'kind(lib)' | |
cargo llvm-cov report --codecov --output-path ./target/codecov-unit.json | |
- name: Upload Coverage Data | |
uses: actions/upload-artifact@v4 | |
with: | |
name: codecov-unit.json | |
path: ./target/codecov-unit.json | |
integration_test: | |
name: Test / integration | |
runs-on: ubuntu-latest | |
needs: [style_rustfmt, style_clippy_check] | |
steps: | |
- name: Setup Rust | |
run: | | |
rustup update stable \ | |
&& rustup default stable \ | |
&& rustup component add llvm-tools-preview | |
- name: Setup Build Tools | |
uses: taiki-e/install-action@v2 | |
with: | |
tool: cargo-llvm-cov,cargo-nextest | |
- name: Setup JDK | |
uses: actions/setup-java@v4 | |
with: | |
java-version: ${{ env.JAVA_VERSION }} | |
distribution: corretto | |
- uses: actions/checkout@v4 | |
name: Checkout source code | |
- name: Hash JDK modules | |
id: hash-jdk-modules | |
run: | | |
file_path="${{ env.JAVA_HOME }}/lib/modules" | |
hash=$(sha256sum "$file_path" | awk '{print $1}') | |
echo "hash=${hash}" >> "$GITHUB_OUTPUT" | |
- name: Cache JDK classes | |
id: cache-jdk-classes | |
uses: actions/cache@v4 | |
with: | |
key: ${{ runner.os }}-${{ runner.arch }}-jdk-classes-${{ steps.hash-jdk-modules.outputs.hash }} | |
path: jdk_classes/ | |
- name: Extract JDK classes | |
if: steps.cache-jdk-classes.outputs.cache-hit != 'true' | |
run: jimage extract --verbose --dir=./jdk_classes "$JAVA_HOME/lib/modules" | |
- name: Cargo Update | |
run: cargo update --verbose | |
- name: Cache Rust Build Stuff | |
uses: actions/cache@v4 | |
with: | |
key: cargo-build-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
cargo-build- | |
path: | | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
target/ | |
- name: Test | |
env: | |
JDK_CLASSES: ./jdk_classes | |
INTEGRATION_TEST: TRUE | |
timeout-minutes: 10 | |
run: | | |
cargo llvm-cov clean --workspace | |
cargo llvm-cov nextest --all-features --no-report --run-ignored=all -E 'kind(test)' | |
cargo llvm-cov report --codecov --output-path ./target/codecov-integration.json | |
- name: Upload Coverage Data | |
uses: actions/upload-artifact@v4 | |
with: | |
name: codecov-integration.json | |
path: ./target/codecov-integration.json | |
codecov: | |
name: Report / Codecov | |
runs-on: ubuntu-latest | |
needs: [unit_test, integration_test] | |
steps: | |
- uses: actions/checkout@v4 | |
name: Checkout source code | |
- name: Download Coverage Data (Unit Test) | |
uses: actions/download-artifact@v4 | |
with: | |
name: codecov-unit.json | |
- name: Download Coverage Data (Integration Test) | |
uses: actions/download-artifact@v4 | |
with: | |
name: codecov-integration.json | |
- name: Upload to codecov (Unit Test) | |
uses: codecov/codecov-action@v4 | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
with: | |
files: codecov-unit.json | |
flags: unit_tests | |
fail_ci_if_error: true | |
- name: Upload to codecov (Integration Test) | |
uses: codecov/codecov-action@v4 | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
with: | |
files: codecov-integration.json | |
flags: integration_tests | |
fail_ci_if_error: true | |
build_doc: | |
name: Docs / Rustdoc | |
runs-on: ubuntu-latest | |
needs: [unit_test, integration_test] | |
steps: | |
- name: Setup Rust | |
run: | | |
rustup update nightly \ | |
&& rustup default nightly | |
- uses: actions/checkout@v4 | |
name: Checkout source code | |
- name: Build docs | |
env: | |
RUSTDOCFLAGS: --cfg unstable | |
run: cargo doc --all-features --no-deps --verbose | |
- name: Fix file permissions | |
run: | | |
chmod -v -R +rX "target/doc/" | while read -r line; do | |
echo "::info title=Fixed file permissions::$line" | |
done | |
- uses: actions/upload-pages-artifact@v3 | |
name: Upload docs as github pages artifact | |
with: | |
name: mokapot-docs | |
path: target/doc | |
publish_latest_docs: | |
name: Deploy / Latest Rustdoc | |
runs-on: ubuntu-latest | |
needs: build_doc | |
if: ${{ !startsWith(github.ref, 'refs/pull/') }} | |
environment: | |
name: Latest Docs | |
url: https://henryhchchc.github.io/mokapot/mokapot | |
permissions: | |
pages: write | |
id-token: write | |
steps: | |
- uses: actions/deploy-pages@v4 | |
name: Deploy docs to github pages | |
with: | |
artifact_name: mokapot-docs | |
publish_to_crate_io: | |
name: Deploy / crates.io | |
runs-on: ubuntu-latest | |
if: ${{ startsWith(github.ref, 'refs/tags/v') }} | |
needs: [unit_test, integration_test, build_doc] | |
environment: | |
name: crates.io | |
url: https://crates.io/crates/mokapot | |
steps: | |
- name: Setup Rust | |
run: rustup update && rustup default | |
- uses: actions/checkout@v4 | |
name: Checkout source code | |
- name: Cargo Update | |
run: cargo update --verbose | |
- name: Restore Rust Build Cache | |
uses: actions/cache@v4 | |
with: | |
key: cargo-build-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('**/Cargo.lock') }} | |
restore-keys: | | |
cargo-build- | |
path: | | |
~/.cargo/registry/index/ | |
~/.cargo/registry/cache/ | |
~/.cargo/git/db/ | |
target/ | |
- uses: actions/checkout@v4 | |
name: Checkout source code | |
- name: Publish to crates.io | |
run: cargo publish --all-features --verbose | |
env: | |
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }} |