Fix llvm-cov build #1604
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref_name }} | |
cancel-in-progress: true | |
env: | |
CARGO_INCREMENTAL: 0 | |
TYPE_CHECK_TARGETS: '{ | |
"no_std": [ | |
"thumbv7em-none-eabihf" | |
], | |
"std_no_offset": [ | |
"x86_64-unknown-netbsd", | |
"x86_64-unknown-illumos", | |
"wasm32-wasi" | |
], | |
"std_with_offset": [ | |
"x86_64-unknown-linux-gnu", | |
"x86_64-apple-darwin", | |
"x86_64-pc-windows-gnu" | |
] | |
}' | |
defaults: | |
run: | |
shell: bash | |
on: | |
push: | |
branches: ["**"] | |
tags-ignore: ["**"] | |
paths-ignore: | |
- "**.md" | |
- LICENSE-Apache | |
- LICENSE-MIT | |
pull_request: | |
paths-ignore: | |
- "**.md" | |
- "**/LICENSE-Apache" | |
- "**/LICENSE-MIT" | |
- .github/FUNDING.yml | |
- .editorconfig | |
- .gitignore | |
- logo.svg | |
jobs: | |
check-targets: | |
name: Type checking (${{ matrix.rust.name }}, ${{ matrix.kind.name }}) | |
runs-on: ubuntu-latest | |
if: (github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork) || github.event_name == 'push' | |
strategy: | |
matrix: | |
rust: | |
- { version: "1.67.0", name: MSRV } | |
- { version: stable, name: stable } | |
kind: | |
- name: no_std | |
query: .no_std + .std_no_offset + .std_with_offset | |
exclude-features: | |
- std | |
- formatting | |
- serde-human-readable | |
- serde-well-known | |
- local-offset | |
- quickcheck | |
group-features: [] | |
- name: std_no_offset | |
query: .std_no_offset + .std_with_offset | |
exclude-features: [local-offset] | |
enable-features: [std] | |
group-features: | |
- [formatting, parsing] | |
- [serde-human-readable, serde-well-known] | |
- name: std_with_offset | |
query: .std_with_offset | |
enable-features: [std, local-offset] | |
group-features: | |
- [formatting, parsing] | |
- [serde-human-readable, serde-well-known] | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
- name: Generate target list | |
run: | | |
echo $TYPE_CHECK_TARGETS \ | |
| jq -r '${{ matrix.kind.query }} | join(",") | "TARGETS=" + .' >> $GITHUB_ENV | |
- name: Install toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ matrix.rust.version }} | |
targets: ${{ env.TARGETS }} | |
- name: Install cargo-hack | |
shell: bash | |
run: | | |
curl -LsSf https://github.com/taiki-e/cargo-hack/releases/latest/download/cargo-hack-x86_64-unknown-linux-gnu.tar.gz \ | |
| tar xzf - -C ~/.cargo/bin | |
- name: Cache cargo output | |
uses: Swatinem/rust-cache@v2 | |
with: | |
key: ${{ matrix.kind.name }} | |
- name: Check feature powerset | |
env: | |
GROUP_FEATURES: ${{ toJSON(matrix.kind.group-features) }} | |
run: | | |
echo $GROUP_FEATURES \ | |
| jq -r '[.[] | join(",")] | map("--group-features " + .) | join(" ")' \ | |
| xargs -d" " \ | |
| ( \ | |
echo $TYPE_CHECK_TARGETS \ | |
| jq -r '${{ matrix.kind.query }} | map("--target " + .) | join(" ")' \ | |
| xargs -d" " \ | |
cargo hack check \ | |
-p time \ | |
--no-dev-deps \ | |
--feature-powerset \ | |
--optional-deps \ | |
--group-features serde,rand \ | |
--exclude-features default,wasm-bindgen,${{ join(matrix.kind.exclude-features) }} \ | |
--features macros,${{ join(matrix.kind.enable-features) }} \ | |
--exclude-all-features \ | |
) | |
check-benchmarks: | |
name: Type-check benchmarks | |
runs-on: ubuntu-latest | |
if: (github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork) || github.event_name == 'push' | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
- name: Install toolchain | |
uses: dtolnay/rust-toolchain@stable | |
- name: Cache cargo output | |
uses: Swatinem/rust-cache@v2 | |
- name: Type-check benchmarks | |
run: cargo check -p time --benches --all-features | |
env: | |
RUSTFLAGS: --cfg bench | |
test: | |
name: Test (${{ matrix.os.name }}, ${{ matrix.rust.name }}) | |
runs-on: ${{ matrix.os.value }} | |
if: (github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork) || github.event_name == 'push' | |
strategy: | |
matrix: | |
rust: | |
- { version: "1.67.0", name: MSRV } | |
- { version: stable, name: stable } | |
os: | |
- { name: Ubuntu, value: ubuntu-latest } | |
- { name: Windows, value: windows-latest } | |
- { name: MacOS, value: macOS-latest } | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
- name: Install toolchain | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ matrix.rust.version }} | |
- name: Install cargo-hack | |
run: | | |
host=$(rustc -Vv | grep host | sed 's/host: //') | |
if [[ $host =~ windows ]]; then | |
curl -LsSf https://github.com/taiki-e/cargo-hack/releases/latest/download/cargo-hack-${host}.zip -o cargo-hack.zip | |
7z x cargo-hack.zip -o$HOME/.cargo/bin | |
elif [[ $host =~ darwin|linux ]]; then | |
curl -LsSf https://github.com/taiki-e/cargo-hack/releases/latest/download/cargo-hack-${host}.tar.gz | tar xzf - -C ~/.cargo/bin | |
else | |
echo "unsupported operating system" | |
exit 1 | |
fi | |
- name: Cache cargo output | |
uses: Swatinem/rust-cache@v2 | |
- name: Test | |
run: cargo test -p time --all-features | |
miri: | |
name: Test (miri) | |
runs-on: ubuntu-latest | |
if: (github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork) || github.event_name == 'push' | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
- name: Install toolchain | |
uses: dtolnay/rust-toolchain@nightly | |
with: | |
components: miri | |
- name: Test | |
run: cargo miri test -p time --all-features | |
env: | |
MIRIFLAGS: -Zmiri-disable-isolation -Zmiri-strict-provenance -Zmiri-symbolic-alignment-check | |
cross-build: | |
name: Cross-build | |
runs-on: ubuntu-latest | |
if: (github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork) || github.event_name == 'push' | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
- name: Install toolchain | |
uses: dtolnay/rust-toolchain@stable | |
with: | |
targets: x86_64-pc-windows-gnu | |
- name: Cache cargo output | |
uses: Swatinem/rust-cache@v2 | |
- name: Install dependencies | |
run: sudo apt install gcc-mingw-w64 | |
# We're testing the linking, so running `cargo check` is insufficient. | |
- name: Cross-build tests | |
run: cargo build -p time --tests --all-features --target x86_64-pc-windows-gnu | |
fmt: | |
name: Formatting | |
runs-on: ubuntu-latest | |
if: (github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork) || github.event_name == 'push' | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
- name: Install toolchain | |
uses: dtolnay/rust-toolchain@nightly | |
with: | |
components: rustfmt | |
- name: Check formatting | |
run: cargo fmt --all -- --check | |
env: | |
RUSTFLAGS: --cfg bench | |
clippy: | |
name: Clippy | |
runs-on: ubuntu-latest | |
if: (github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork) || github.event_name == 'push' | |
steps: | |
- name: Checkout sources | |
uses: actions/checkout@v3 | |
- name: Install toolchain | |
uses: dtolnay/rust-toolchain@nightly | |
with: | |
components: clippy | |
- name: Install targets | |
run: | | |
rustup target add \ | |
x86_64-unknown-linux-gnu \ | |
aarch64-apple-darwin \ | |
x86_64-pc-windows-gnu \ | |
x86_64-unknown-netbsd \ | |
x86_64-unknown-illumos \ | |
wasm32-wasi | |
# - name: Cache cargo output | |
# uses: Swatinem/rust-cache@v2 | |
- name: Run clippy | |
run: | | |
cargo clippy \ | |
--all-features \ | |
--benches \ | |
--tests \ | |
--target x86_64-unknown-linux-gnu \ | |
--target aarch64-apple-darwin \ | |
--target x86_64-pc-windows-gnu \ | |
--target x86_64-unknown-netbsd \ | |
--target x86_64-unknown-illumos \ | |
--target wasm32-wasi \ | |
-Zlints | |
env: | |
RUSTFLAGS: --cfg bench | |
documentation: | |
name: Documentation | |
runs-on: ubuntu-latest | |
if: (github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork) || github.event_name == 'push' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
persist-credentials: false | |
- name: Install toolchain | |
uses: dtolnay/rust-toolchain@nightly | |
- name: Cache cargo output | |
uses: Swatinem/rust-cache@v2 | |
- name: Document public API | |
run: cargo doc -p time --all-features -Zrustdoc-map | |
env: | |
RUSTDOCFLAGS: --cfg __time_03_docs | |
- name: Create top-level redirect | |
run: | | |
echo "<meta http-equiv='refresh' content='0; url=https://time-rs.github.io/api/time'>" \ | |
> ./target/doc/index.html | |
- name: Publish public docs | |
uses: JamesIves/github-pages-deploy-action@releases/v4 | |
with: | |
token: ${{ secrets.ACCESS_TOKEN }} | |
branch: main | |
folder: target/doc | |
target-folder: api | |
repository-name: time-rs/time-rs.github.io | |
if: github.event_name == 'push' && github.ref == format('refs/heads/{0}', github.event.repository.master_branch) | |
- name: Document internal API | |
run: cargo doc -p time --all-features --no-deps -Zrustdoc-map --document-private-items | |
env: | |
RUSTDOCFLAGS: --cfg __time_03_docs --document-hidden-items | |
- name: Create top-level redirect | |
run: | | |
echo "<meta http-equiv='refresh' content='0; url=https://time-rs.github.io/internal-api/time'>" \ | |
> ./target/doc/index.html | |
- name: Publish internal docs | |
uses: JamesIves/github-pages-deploy-action@releases/v4 | |
with: | |
token: ${{ secrets.ACCESS_TOKEN }} | |
branch: main | |
folder: target/doc | |
target-folder: internal-api | |
repository-name: time-rs/time-rs.github.io | |
if: github.event_name == 'push' && github.ref == format('refs/heads/{0}', github.event.repository.master_branch) | |
coverage: | |
name: Coverage | |
runs-on: ubuntu-latest | |
permissions: | |
issues: write | |
if: (github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork) || github.event_name == 'push' | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v3 | |
with: | |
persist-credentials: false | |
- name: Install toolchain | |
uses: dtolnay/rust-toolchain@nightly | |
- name: Install cargo-llvm-cov | |
run: | | |
curl -LsSf https://github.com/taiki-e/cargo-llvm-cov/releases/latest/download/cargo-llvm-cov-x86_64-unknown-linux-gnu.tar.gz \ | |
| tar xzf - -C ~/.cargo/bin | |
- name: Generate coverage report | |
run: | | |
cargo llvm-cov clean --workspace | |
cargo llvm-cov test -p time --no-report --all-features -- --test-threads=1 | |
cargo llvm-cov report --lcov > lcov.txt | |
env: | |
RUSTFLAGS: --cfg __ui_tests | |
- name: Upload coverage report | |
uses: codecov/codecov-action@v3 | |
with: | |
files: ./lcov.txt |