obsidian-export/.github/workflows/test.yml

185 lines
6.7 KiB
YAML
Raw Normal View History

name: CI tests
2021-02-14 22:48:52 +03:00
on: [push, pull_request]
2020-11-28 15:14:50 +03:00
env:
SCCACHE_GHA_ENABLED: "true"
RUSTC_WRAPPER: "sccache"
2020-11-28 15:14:50 +03:00
jobs:
build:
name: Build project
2020-11-28 15:14:50 +03:00
runs-on: ubuntu-latest
outputs:
rustc_cache_key: ${{ steps.setup_rust.outputs.cachekey }}
2020-11-28 15:14:50 +03:00
steps:
2024-06-23 15:59:44 +03:00
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- uses: dtolnay/rust-toolchain@stable
id: setup_rust
2020-11-28 15:14:50 +03:00
with:
components: "rustfmt, clippy"
2024-06-23 15:59:44 +03:00
- uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3
2020-11-28 15:14:50 +03:00
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: "cargo-base-${{ steps.setup_rust.outputs.cachekey }}-${{ hashFiles('**/Cargo.lock') }}"
restore-keys: |
cargo-base-${{ env.RUSTC_CACHEKEY }}
- name: Run sccache-cache
uses: mozilla-actions/sccache-action@89e9040de88b577a072e3760aaf59f585da083af # v0.0.5
- run: cargo build --locked --all-targets
2020-11-28 15:14:50 +03:00
lint:
name: Run lints
runs-on: ubuntu-latest
needs: build
steps:
2024-06-23 15:59:44 +03:00
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3
2020-11-28 15:14:50 +03:00
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: "cargo-lint-${{ needs.build.outputs.rustc_cache_key }}-${{ hashFiles('**/Cargo.lock') }}"
restore-keys: |
cargo-lint-${{ env.RUSTC_CACHEKEY }}
cargo-base-${{ env.RUSTC_CACHEKEY }}
fail-on-cache-miss: true
- name: Run sccache-cache
uses: mozilla-actions/sccache-action@89e9040de88b577a072e3760aaf59f585da083af # v0.0.5
2020-11-28 15:14:50 +03:00
- run: cargo fmt --all -- --check
- run: cargo check
- run: cargo clippy -- -D warnings
2020-11-28 15:14:50 +03:00
2023-09-26 10:06:19 +03:00
pre-commit:
name: Run pre-commit
runs-on: ubuntu-latest
needs: build
env:
# These hooks are expensive and already run as dedicated jobs above
SKIP: "tests,clippy"
steps:
2024-06-23 15:59:44 +03:00
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3
2023-09-26 10:06:19 +03:00
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: "cargo-lint-${{ needs.build.outputs.rustc_cache_key }}-${{ hashFiles('**/Cargo.lock') }}"
restore-keys: |
cargo-lint-${{ env.RUSTC_CACHEKEY }}
cargo-base-${{ env.RUSTC_CACHEKEY }}
fail-on-cache-miss: true
- name: Run sccache-cache
uses: mozilla-actions/sccache-action@89e9040de88b577a072e3760aaf59f585da083af # v0.0.5
2023-09-26 10:06:19 +03:00
2024-06-23 15:59:44 +03:00
- uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5
2023-09-26 10:06:19 +03:00
- name: set PYVERSION
run: echo "PYVERSION=$(python --version | tr ' ' '-')" >> $GITHUB_ENV
2024-06-23 15:59:44 +03:00
- uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3
2023-09-26 10:06:19 +03:00
with:
path: ~/.cache/pre-commit
# Changes to pre-commit-config.yaml may require the installation of
# new binaries/scripts. When a cache hit occurs, changes to the cache
# aren't persisted at the end of the run, so making the key dependent
# on the configuration file ensures we always persist a complete cache.
key: pre-commit-${{ env.PYVERSION }}-${{ hashFiles('.pre-commit-config.yaml') }}
- run: pip install pre-commit
- run: pre-commit run --all --color=always --show-diff-on-failure
2020-11-28 15:14:50 +03:00
test-linux:
name: Test on Linux
runs-on: ubuntu-latest
needs: build
2020-11-28 15:14:50 +03:00
steps:
2024-06-23 15:59:44 +03:00
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3
2020-11-28 15:14:50 +03:00
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: "cargo-test-${{ needs.build.outputs.rustc_cache_key }}-${{ hashFiles('**/Cargo.lock') }}"
restore-keys: |
cargo-test-${{ env.RUSTC_CACHEKEY }}
cargo-base-${{ env.RUSTC_CACHEKEY }}
fail-on-cache-miss: true
- name: Run sccache-cache
uses: mozilla-actions/sccache-action@89e9040de88b577a072e3760aaf59f585da083af # v0.0.5
- run: cargo test
2020-11-28 15:14:50 +03:00
test-windows:
name: Test on Windows
runs-on: windows-latest
needs: build
2020-11-28 15:14:50 +03:00
steps:
- run: git config --system core.autocrlf false && git config --system core.eol lf
2024-06-23 15:59:44 +03:00
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- uses: dtolnay/rust-toolchain@stable
id: setup_rust
2024-06-23 15:59:44 +03:00
- uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3
2020-11-28 15:14:50 +03:00
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: "cargo-windows-${{ needs.build.outputs.rustc_cache_key }}-${{ hashFiles('**/Cargo.lock') }}"
restore-keys: |
cargo-windows-${{ env.RUSTC_CACHEKEY }}
cargo-base-${{ env.RUSTC_CACHEKEY }}
fail-on-cache-miss: true
- name: Run sccache-cache
uses: mozilla-actions/sccache-action@89e9040de88b577a072e3760aaf59f585da083af # v0.0.5
- run: cargo test
2020-11-28 15:14:50 +03:00
coverage:
name: Code coverage
runs-on: ubuntu-latest
needs: build
2020-11-28 15:14:50 +03:00
steps:
2024-06-23 15:59:44 +03:00
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4
- uses: actions/cache@e12d46a63a90f2fae62d114769bbf2a179198b5c # v3
2020-11-28 15:14:50 +03:00
with:
path: |
~/.cargo/bin/
~/.cargo/registry/index/
~/.cargo/registry/cache/
~/.cargo/git/db/
target/
key: "cargo-coverage-${{ needs.build.outputs.rustc_cache_key }}-${{ hashFiles('**/Cargo.lock') }}"
restore-keys: |
cargo-coverage-${{ env.RUSTC_CACHEKEY }}
cargo-base-${{ env.RUSTC_CACHEKEY }}
fail-on-cache-miss: true
- name: Run sccache-cache
uses: mozilla-actions/sccache-action@89e9040de88b577a072e3760aaf59f585da083af # v0.0.5
2024-06-23 15:59:44 +03:00
- uses: actions-rs/tarpaulin@044a1e5bdace8dd2f727b1af63c1d9a1d3572068 # v0.1
2020-11-28 15:14:50 +03:00
with:
2023-09-22 12:20:32 +03:00
# Constrained by https://github.com/actions-rs/tarpaulin/pull/23
version: "0.22.0"
2020-11-28 15:14:50 +03:00
args: "--ignore-tests"
out-type: "Html"
- uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4
2020-11-28 15:14:50 +03:00
with:
name: tarpaulin-report
path: tarpaulin-report.html