46 lines
1.5 KiB
YAML
46 lines
1.5 KiB
YAML
name: Rust Crate Workflow
|
|
description: Build and test your Rust crate
|
|
|
|
inputs:
|
|
codecov_token:
|
|
required: true
|
|
description: The codecov token used to upload coverage reports.
|
|
working_directory:
|
|
required: false
|
|
default: "."
|
|
description: The working directory for this workflow.
|
|
|
|
runs:
|
|
using: "composite"
|
|
steps:
|
|
- name: Build
|
|
working-directory: ${{ inputs.working_directory }}
|
|
shell: ${{ inputs.shell }}
|
|
run: cargo build --verbose
|
|
|
|
- name: Test
|
|
working-directory: ${{ inputs.working_directory }}
|
|
shell: ${{ inputs.shell }}
|
|
run: |
|
|
cargo install cargo-llvm-cov
|
|
cargo llvm-cov --lcov --output-path lcov.info
|
|
|
|
# Per https://stackoverflow.com/questions/73402042/github-action-expressions-split-string
|
|
- name: Split package name
|
|
env:
|
|
PACKAGE_PATH: ${{ inputs.working_directory}}
|
|
id: split
|
|
shell: ${{ inputs.shell }}
|
|
run: echo "package_name=${PACKAGE_PATH##*/}" >> $GITHUB_OUTPUT
|
|
|
|
- name: Upload Coverage
|
|
uses: codecov/codecov-action@v3
|
|
with:
|
|
# We use Codecov's carryforward flags to allow our PR testing to only
|
|
# run affected packages, but also allow our coverage information from
|
|
# past runs to "carry forward" on a "per flag" basis. We tag coverage
|
|
# information with "flags" explaining what directory the coverage is from.
|
|
# https://docs.codecov.com/docs/carryforward-flags
|
|
flags: ${{ steps.split.outputs.package_name }}
|
|
token: ${{ inputs.codecov_token }}
|