Skip to content

Prepare release/10.4.0 #12524

Prepare release/10.4.0

Prepare release/10.4.0 #12524

Workflow file for this run

name: rust
concurrency:
group: "${{ github.workflow }}-${{ github.ref }}"
cancel-in-progress: true
on:
push:
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:
check:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
command:
- cargo check --workspace --locked --all-targets
- cargo check --workspace --locked --target wasm32-unknown-unknown --exclude test-wire-server
- cargo clippy --workspace --locked --all-targets
- cargo clippy --workspace --locked --target wasm32-unknown-unknown --exclude test-wire-server
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: ./.github/actions/setup-and-cache-rust
with:
components: clippy
target: wasm32-unknown-unknown
rustflags: ${{ contains(matrix.command, 'wasm32-unknown-unknown') && '--cfg getrandom_backend="wasm_js" -D warnings' || '-D warnings' }}
- run: ${{ matrix.command }}
fmt-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: ./.github/actions/setup-and-cache-rust
with:
components: rustfmt
toolchain: nightly
- run: cargo +nightly fmt --all -- --check
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: ./.github/actions/setup-and-cache-rust
- uses: taiki-e/install-action@nextest
- name: "test corecrypto"
run: cargo nextest run --verbose --locked
- name: "test corecrypto documentation"
run: cargo test --doc --locked
- name: "upload test results"
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@3d0d9888cb7fd7b750713d6e236d1fcb99157228 # v3.0.2
with:
files: target/nextest/default/junit.xml
fail_on_unmatched_files: true
proteus-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: ./.github/actions/setup-and-cache-rust
- uses: taiki-e/install-action@nextest
- name: "test corecrypto's proteus implementation"
run: cargo nextest run --locked --verbose --features proteus,proteus-keystore proteus
keystore-wasm-test:
runs-on: ubuntu-latest
env:
WASM_BINDGEN_TEST_TIMEOUT: "1200" # if our test takes over 20m, it probably _should_ fail
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: ./.github/actions/setup-and-cache-rust
with:
target: wasm32-unknown-unknown
- uses: taiki-e/install-action@wasm-pack
# With Rust 1.97's v0 mangling, wasm-bindgen's demangler can map distinct symbols to
# the same generated export name. Stable Rust cannot opt back into legacy mangling.
# See https://blog.rust-lang.org/2026/07/09/Rust-1.97.0/#symbol-mangling-v0-enabled-by-default
- run: CARGO_PROFILE_TEST_STRIP=symbols wasm-pack test --headless --chrome -- ./keystore --locked
keystore-proteus-wasm-test:
runs-on: ubuntu-latest
env:
WASM_BINDGEN_TEST_TIMEOUT: "1200" # if our test takes over 20m, it probably _should_ fail
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: ./.github/actions/setup-and-cache-rust
with:
target: wasm32-unknown-unknown
- uses: taiki-e/install-action@wasm-pack
# With Rust 1.97's v0 mangling, wasm-bindgen's demangler can map distinct symbols to
# the same generated export name. Stable Rust cannot opt back into legacy mangling.
# See https://blog.rust-lang.org/2026/07/09/Rust-1.97.0/#symbol-mangling-v0-enabled-by-default
- run: CARGO_PROFILE_TEST_STRIP=symbols wasm-pack test --headless --chrome -- ./keystore --locked --features proteus-keystore -- proteus
hack:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: ./.github/actions/setup-and-cache-rust
# Per default, we're using "-D warnings" for rustflags. However, it's a lot of (unnecessary) effort to fix all "unused import"
# issue for every possible feature set, that's why we don't want to fail on warnings here. For this, we're passing
# an empty set of rustflags.
with:
rustflags: ''
- uses: taiki-e/install-action@cargo-hack
- name: cargo/hack (verify features compile in isolation)
run: cargo hack check --each-feature --no-dev-deps