feat: add public build metadata [WPB-11001] #4747
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: Rust compile & test | |
concurrency: | |
group: "${{ github.workflow }}-${{ github.ref }}" | |
cancel-in-progress: true | |
on: | |
push: | |
branches: | |
- main | |
tags: | |
- '*' | |
pull_request: | |
env: | |
RUST_BACKTRACE: 1 | |
CARGO_TERM_COLOR: always | |
CARGO_NET_GIT_FETCH_WITH_CLI: true | |
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse | |
jobs: | |
doc: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rust-lang/setup-rust-toolchain@v1 # this implicitly caches Rust tools and build artifacts | |
with: | |
rustflags: '-D warnings -W unreachable-pub' | |
- run: cargo doc --all --no-deps | |
check: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rust-lang/setup-rust-toolchain@v1 # this implicitly caches Rust tools and build artifacts | |
with: | |
components: rustfmt, clippy | |
rustflags: '' | |
target: wasm32-unknown-unknown | |
- run: cargo fmt --all -- --check | |
- run: cargo clippy -- -D warnings | |
- run: cargo clippy --target wasm32-unknown-unknown -- -D warnings | |
- run: cargo check --tests | |
- run: cargo check --tests --target wasm32-unknown-unknown | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rust-lang/setup-rust-toolchain@v1 # this implicitly caches Rust tools and build artifacts | |
with: | |
rustflags: '' | |
- run: cargo build --verbose | |
test: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rust-lang/setup-rust-toolchain@v1 # this implicitly caches Rust tools and build artifacts | |
with: | |
rustflags: '' | |
- uses: taiki-e/install-action@nextest | |
- name: "Test CoreCrypto" | |
run: cargo nextest run --verbose | |
- name: "Test CoreCrypto documentation" | |
run: cargo test --doc | |
- name: "Upload test results" | |
if: startsWith(github.ref, 'refs/tags/') | |
uses: softprops/action-gh-release@v2 | |
with: | |
files: target/nextest/default/junit.xml | |
test-keystore-regressions: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rust-lang/setup-rust-toolchain@v1 # this implicitly caches Rust tools and build artifacts | |
with: | |
rustflags: '' | |
- name: "Test Keystore regressions" | |
run: | | |
cd extras/keystore-regression-versions | |
cargo run | |
proteus-test: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rust-lang/setup-rust-toolchain@v1 # this implicitly caches Rust tools and build artifacts | |
with: | |
rustflags: '' | |
- uses: taiki-e/install-action@nextest | |
- name: "Test CoreCrypto's proteus implementation" | |
run: cargo nextest run --verbose --features proteus,cryptobox-migrate,proteus-keystore proteus | |
wasm-build: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
workspace: [ "crypto", "keystore", "mls-provider" ] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rust-lang/setup-rust-toolchain@v1 # this implicitly caches Rust tools and build artifacts | |
with: | |
target: wasm32-unknown-unknown | |
rustflags: '' | |
- name: Install wasm-pack | |
uses: taiki-e/install-action@v2 | |
with: | |
tool: wasm-pack | |
- name: WASM build | |
run: wasm-pack build --dev --target web ${{ matrix.workspace }} | |
wasm-test: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
crate_paths: [ "keystore", "mls-provider" ] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rust-lang/setup-rust-toolchain@v1 # this implicitly caches Rust tools and build artifacts | |
with: | |
target: wasm32-unknown-unknown | |
rustflags: '' | |
- uses: browser-actions/setup-chrome@latest | |
id: setup-chrome | |
with: | |
chrome-version: stable | |
- run: | | |
echo "CHROME_PATH=${{ steps.setup-chrome.outputs.chrome-path }}" >> $GITHUB_ENV | |
- name: Install wasm-pack | |
uses: taiki-e/install-action@v2 | |
with: | |
tool: wasm-pack | |
- name: Run tests (wasm) | |
run: wasm-pack test --headless --chrome ./${{ matrix.crate_paths }} | |
# TODO: pending a proper solution to fix the size limit for WASM tests. Tracking issue: WPB-9581 | |
wasm-core-test: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rust-lang/setup-rust-toolchain@v1 # this implicitly caches Rust tools and build artifacts | |
with: | |
target: wasm32-unknown-unknown | |
rustflags: '' | |
- uses: browser-actions/setup-chrome@latest | |
id: setup-chrome | |
with: | |
chrome-version: stable | |
- run: | | |
echo "CHROME_PATH=${{ steps.setup-chrome.outputs.chrome-path }}" >> $GITHUB_ENV | |
- name: Install wasm-pack | |
uses: taiki-e/install-action@v2 | |
with: | |
tool: wasm-pack | |
- name: Run core tests (wasm) | |
run: sh crypto-ffi/bindings/js/test/wasm-tests.sh | |
proteus-wasm-test: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rust-lang/setup-rust-toolchain@v1 # this implicitly caches Rust tools and build artifacts | |
with: | |
target: wasm32-unknown-unknown | |
rustflags: '' | |
- uses: browser-actions/setup-chrome@latest | |
id: setup-chrome | |
with: | |
chrome-version: stable | |
- run: | | |
echo "CHROME_PATH=${{ steps.setup-chrome.outputs.chrome-path }}" >> $GITHUB_ENV | |
- name: Install wasm-pack | |
uses: taiki-e/install-action@v2 | |
with: | |
tool: wasm-pack | |
- name: Run tests (wasm) | |
run: | | |
wasm-pack test --headless --chrome ./keystore -F "proteus-keystore" -- proteus | |
wasm-pack test --headless --chrome ./crypto -F "proteus,cryptobox-migrate" -- proteus | |
e2e-interop-test: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rust-lang/setup-rust-toolchain@v1 # this implicitly caches Rust tools and build artifacts | |
with: | |
target: wasm32-unknown-unknown | |
rustflags: '' | |
- name: Setup cargo-make | |
uses: davidB/rust-cargo-make@v1 | |
- name: Install wasm-pack | |
uses: taiki-e/install-action@v2 | |
with: | |
tool: wasm-pack | |
- uses: browser-actions/setup-chrome@latest | |
id: setup-chrome | |
with: | |
chrome-version: stable | |
- uses: oven-sh/setup-bun@v2 | |
with: | |
bun-version: latest | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
- run: | | |
echo "CHROME_PATH=${{ steps.setup-chrome.outputs.chrome-path }}" >> $GITHUB_ENV | |
- name: Run E2E interop test | |
run: cargo run --bin interop | |
hack: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions-rust-lang/setup-rust-toolchain@v1 # this implicitly caches Rust tools and build artifacts | |
with: | |
rustflags: '' | |
- uses: taiki-e/install-action@cargo-hack | |
- name: cargo/hack (verify features compile in isolation) | |
run: cargo hack check --each-feature --exclude-features uniffi --no-dev-deps |