Skip to content

ci(codecov): add names for flags #410

ci(codecov): add names for flags

ci(codecov): add names for flags #410

Workflow file for this run

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
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: 21
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: 21
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: 21
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
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 }}