bring coverage and docs back into CI

This commit is contained in:
Alfredo Garcia 2021-02-16 16:05:27 -03:00 committed by Deirdre Connolly
parent 47bcf6309a
commit 280496ef4e
2 changed files with 124 additions and 0 deletions

54
.github/workflows/coverage.yml vendored Normal file
View File

@ -0,0 +1,54 @@
name: CI
on:
pull_request:
branches:
- main
push:
branches:
- main
jobs:
coverage:
name: Coverage (+nightly)
timeout-minutes: 30
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
- uses: actions-rs/toolchain@v1
with:
toolchain: nightly
override: true
profile: minimal
components: llvm-tools-preview
- name: Install rustfilt symbol demangler
run: |
cargo install rustfilt
- name: Rerun tests for coverage
env:
RUSTFLAGS: -Zinstrument-coverage -C link-dead-code -C debuginfo=2
LLVM_PROFILE_FILE: "${{ github.workspace }}/test.%p.profraw"
ZEBRA_SKIP_NETWORK_TESTS: 1
run: |
cargo test
cargo test --no-run --message-format=json | jq -r "select(.profile.test == true) | .filenames[]" | grep -v dSYM - > filenames.txt
- name: Merge coverage data
run: |
$(rustc --print target-libdir)/../bin/llvm-profdata merge test.*.profraw -o test.profdata
- name: Generate detailed html coverage report for github artifact
run: |
$(rustc --print target-libdir)/../bin/llvm-cov show -format=html -ignore-filename-regex=".*/.cargo/registry/.*" -ignore-filename-regex=".*/.cargo/git/.*" -ignore-filename-regex=".*/.rustup/.*" -Xdemangler=rustfilt -show-instantiations -output-dir=./coverage -instr-profile=./test.profdata $(printf -- "-object %s " $(cat filenames.txt))
- uses: actions/upload-artifact@v2
with:
name: coverage
path: ./coverage
- name: Generate lcov coverage report for codecov
run: |
$(rustc --print target-libdir)/../bin/llvm-cov export -format=lcov -instr-profile=test.profdata $(printf -- "-object %s " $(cat filenames.txt)) > "lcov.info"
- name: Upload coverage report to Codecov
uses: codecov/codecov-action@v1

70
.github/workflows/docs.yml vendored Normal file
View File

@ -0,0 +1,70 @@
name: Docs
on:
push:
branches:
- main
jobs:
build:
name: Build and Deploy Docs (+beta)
timeout-minutes: 30
runs-on: ubuntu-latest
steps:
- name: Checkout the source code
uses: actions/checkout@master
- name: Install latest beta
uses: actions-rs/toolchain@v1
with:
toolchain: beta
override: true
- name: Install mdbook
run: |
cd book
curl -L https://github.com/rust-lang/mdBook/releases/download/v0.4.5/mdbook-v0.4.5-x86_64-unknown-linux-gnu.tar.gz | tar xz
# Add the book directory to the $PATH
echo "$GITHUB_WORKSPACE/book" >> $GITHUB_PATH
- name: Build Zebra book
run: |
mdbook build book/
- name: Deploy Zebra book to firebase
uses: w9jds/firebase-action@v2.0.0
with:
args: deploy
env:
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
PROJECT_PATH: book/
PROJECT_ID: zebra-book
- name: Build external docs
run: |
# Exclude zebra-utils, it is not for library or app users
cargo doc --no-deps --workspace --exclude zebra-utils
env:
RUSTDOCFLAGS: "--html-in-header katex-header.html"
- name: Deploy external docs to firebase
uses: w9jds/firebase-action@v2.0.0
with:
args: deploy
env:
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
PROJECT_ID: zealous-zebra
- name: Build internal docs
run: |
cargo doc --no-deps --document-private-items
env:
RUSTDOCFLAGS: "--html-in-header katex-header.html"
- name: Deploy external docs to firebase
uses: w9jds/firebase-action@v2.0.0
with:
args: deploy
env:
FIREBASE_TOKEN: ${{ secrets.FIREBASE_TOKEN }}
PROJECT_ID: zebra-doc-internal