vm/.github/workflows/coverage.yml

73 lines
1.9 KiB
YAML

name: Code Coverage
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main, develop ]
schedule:
# 每周一运行一次
- cron: '0 0 * * 1'
workflow_dispatch:
jobs:
coverage:
name: Generate Coverage Report
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
tool: [llvm-cov]
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: llvm-tools-preview
- name: Install cargo-llvm-cov
uses: taiki-e/install-action@cargo-llvm-cov
- name: Cache cargo registry
uses: actions/cache@v3
with:
path: |
~/.cargo/registry
~/.cargo/git
target/
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
restore-keys: |
${{ runner.os }}-cargo-
- name: Generate coverage report
run: |
chmod +x scripts/coverage.sh
COVERAGE_TOOL=llvm-cov COVERAGE_OUTPUT_DIR=coverage ./scripts/coverage.sh
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
with:
files: ./coverage/lcov.info
flags: unittests
name: codecov-umbrella
fail_ci_if_error: false
- name: Upload coverage artifacts
uses: actions/upload-artifact@v3
with:
name: coverage-report
path: |
coverage/
coverage-summary.txt
retention-days: 30
- name: Comment PR with coverage
if: github.event_name == 'pull_request'
uses: py-cov-action/python-coverage-comment-action@v3
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COVERAGE_FILE: coverage/coverage-summary.txt