build: Use git submodule to download protobuf sources #7
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: CI | |
on: | |
push: | |
branches: [ "master" ] | |
pull_request: | |
merge_group: | |
branches: [ "master" ] | |
env: | |
PROTOC_VERSION: 3.20.3 | |
jobs: | |
rustfmt: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
components: rustfmt | |
- run: cargo fmt --all --check | |
machete: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: taiki-e/install-action@cargo-machete | |
- name: Check unused dependencies | |
run: cargo machete | |
test: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
toolchain: | |
- stable | |
- "1.70" | |
os: | |
- ubuntu-latest | |
- macos-latest | |
- windows-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: 'recursive' | |
- name: install toolchain (${{ matrix.toolchain }}) | |
uses: dtolnay/rust-toolchain@master | |
with: | |
toolchain: ${{ matrix.toolchain }} | |
- name: install protoc | |
uses: taiki-e/install-action@v2 | |
with: | |
tool: protoc@${{ env.PROTOC_VERSION }} | |
- name: install ninja | |
uses: ./.github/actions/setup-ninja | |
- uses: Swatinem/rust-cache@v2 | |
- name: test | |
run: cargo test --workspace --all-targets | |
- name: test no-default-features | |
run: cargo test -p prost-build -p prost-derive -p prost-types --all-targets --no-default-features | |
# Run doc tests separately: https://github.com/rust-lang/cargo/issues/6669 | |
- name: test doc | |
run: cargo test --workspace --doc | |
- name: test doc no-default-features | |
run: cargo test -p prost-build -p prost-derive -p prost-types --doc --no-default-features | |
minimal-versions: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@nightly | |
- uses: dtolnay/rust-toolchain@stable | |
- uses: taiki-e/install-action@cargo-hack | |
- uses: taiki-e/install-action@cargo-minimal-versions | |
- run: cargo minimal-versions --no-private check --workspace --all-features | |
kani: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Verify with Kani | |
uses: model-checking/kani-github-action@v0.32 | |
with: | |
enable-propproof: true | |
args: | | |
--tests -p prost-types --default-unwind 3 \ | |
--harness "tests::check_timestamp_roundtrip_via_system_time" \ | |
--harness "tests::check_duration_roundtrip" \ | |
--harness "tests::check_duration_roundtrip_nanos" | |
# --default-unwind N roughly corresponds to how much effort | |
# Kani will spend trying to prove correctness of the | |
# program. Higher the number, more programs can be proven | |
# correct. However, Kani will require more time and memory. If | |
# Kani fails with "Failed Checks: unwinding assertion," this | |
# number may need to be raised for Kani to succeed. | |
no-std: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: dtolnay/rust-toolchain@nightly | |
- name: install protoc | |
uses: taiki-e/install-action@v2 | |
with: | |
tool: protoc@${{ env.PROTOC_VERSION }} | |
- uses: Swatinem/rust-cache@v2 | |
- name: install cargo-no-std-check | |
uses: baptiste0928/cargo-install@v2 | |
with: | |
crate: cargo-no-std-check | |
- name: prost cargo-no-std-check | |
run: cargo no-std-check --manifest-path Cargo.toml --no-default-features | |
- name: prost-types cargo-no-std-check | |
run: cargo no-std-check --manifest-path prost-types/Cargo.toml --no-default-features | |
# prost-build depends on prost with --no-default-features, but when | |
# prost-build is built through the workspace, prost typically has default | |
# features enabled due to vagaries in Cargo workspace feature resolution. | |
# This additional check ensures that prost-build does not rely on any of | |
# prost's default features to compile. | |
- name: prost-build check | |
run: cargo check --manifest-path prost-build/Cargo.toml |