Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: add codecov github action #573

Merged
merged 1 commit into from Mar 14, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
72 changes: 72 additions & 0 deletions .github/workflows/codecov.yml
@@ -0,0 +1,72 @@
# Run cargo-llvm-cov and upload to codecov.io

name: Code Coverage

on:
workflow_dispatch:
push:
# branches:
# - main
paths:
- '**.rs'
- '.github/workflows/codecov.yml'

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: ${{ github.ref_name != 'main' }}

jobs:
coverage:
name: Code Coverage
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Install Rust
uses: moonrepo/setup-rust@v1
with:
bins: just, taplo-cli
cache-base: main
components: clippy,rustfmt,llvm-tools-preview

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

- name: Run
run: cargo llvm-cov --lcov --output-path lcov.info

- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: codecov
path: lcov.info

# codecov often fails, use another workflow for retry
upload-codecov:
name: Upload coverage file
runs-on: ubuntu-latest
needs: coverage
# Check if the event is not triggered by a fork by checking whether CODECOV_TOKEN is set
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
steps:
- name: Checkout
if: env.CODECOV_TOKEN
uses: actions/checkout@v4

- name: Download coverage file
if: env.CODECOV_TOKEN
uses: actions/download-artifact@v4
with:
name: codecov

- name: Upload to codecov.io
if: env.CODECOV_TOKEN
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: true
files: lcov.info