mirror of
https://github.com/outbackdingo/firezone.git
synced 2026-03-22 00:41:55 +00:00
In #5786, we massively increase the performance of `tunnel_test` and thus, it is no longer necessary to build all tests using optimisation level 1. Windows is very slow in compiling Rust and forcing it to compile with optimisations doesn't help that. On `main`, the compile phase takes ~ **8min**: https://github.com/firezone/firezone/actions/runs/9847792756/job/27188488313#step:5:968 With this patch, the compile phase takes ~**6min**: https://github.com/firezone/firezone/actions/runs/9849448280/job/27193128597?pr=5805#step:5:967
138 lines
4.6 KiB
YAML
138 lines
4.6 KiB
YAML
---
|
|
name: Rust
|
|
"on":
|
|
workflow_call:
|
|
|
|
defaults:
|
|
run:
|
|
working-directory: ./rust
|
|
|
|
permissions:
|
|
contents: 'read'
|
|
id-token: 'write'
|
|
|
|
jobs:
|
|
static-analysis:
|
|
name: static-analysis-${{ matrix.runs-on }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
# TODO: https://github.com/rust-lang/cargo/issues/5220
|
|
include:
|
|
- runs-on: ubuntu-22.04
|
|
- runs-on: macos-14
|
|
- runs-on: windows-2022
|
|
runs-on: ${{ matrix.runs-on }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: ./.github/actions/setup-rust
|
|
id: setup-rust
|
|
- uses: ./.github/actions/setup-tauri
|
|
timeout-minutes: 5
|
|
- uses: taiki-e/install-action@cargo-udeps
|
|
- run: |
|
|
rustup install --no-self-update nightly-2024-03-26 --profile minimal # The exact nightly version doesn't matter, just pin a random one.
|
|
cargo +nightly-2024-03-26 udeps --all-targets --all-features ${{ steps.setup-rust.outputs.packages }}
|
|
name: Check for unused dependencies
|
|
- run: cargo fmt -- --check
|
|
- run: cargo doc --all-features --no-deps --document-private-items ${{ steps.setup-rust.outputs.packages }}
|
|
env:
|
|
RUSTDOCFLAGS: "-D warnings"
|
|
name: "cargo doc"
|
|
shell: bash
|
|
- run: cargo clippy --all-targets --all-features ${{ steps.setup-rust.outputs.packages }} -- -D warnings
|
|
name: "cargo clippy"
|
|
shell: bash
|
|
|
|
test:
|
|
name: test-${{ matrix.runs-on }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
# TODO: https://github.com/rust-lang/cargo/issues/5220
|
|
include:
|
|
- runs-on: ubuntu-20.04
|
|
- runs-on: ubuntu-22.04
|
|
- runs-on: macos-12
|
|
- runs-on: macos-13
|
|
- runs-on: macos-14
|
|
- runs-on: windows-2019
|
|
- runs-on: windows-2022
|
|
runs-on: ${{ matrix.runs-on }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: ./.github/actions/setup-rust
|
|
id: setup-rust
|
|
- uses: ./.github/actions/setup-tauri
|
|
- run: cargo test --all-features ${{ steps.setup-rust.outputs.packages }} -- --include-ignored
|
|
env:
|
|
# <https://github.com/rust-lang/cargo/issues/5999>
|
|
# Needed to create tunnel interfaces in unit tests
|
|
CARGO_TARGET_X86_64_UNKNOWN_LINUX_GNU_RUNNER: "sudo --preserve-env"
|
|
PROPTEST_VERBOSE: 0 # Otherwise the output is very long.
|
|
name: "cargo test"
|
|
shell: bash
|
|
|
|
# Runs the Tauri client smoke test, built in debug mode. We can't run it in release
|
|
# mode because of a known issue: <https://github.com/firezone/firezone/blob/456e044f882c2bb314e19cc44c0d19c5ad817b7c/rust/windows-client/src-tauri/src/client.rs#L162-L164>
|
|
gui-smoke-test:
|
|
name: gui-smoke-test-${{ matrix.runs-on }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- runs-on: ubuntu-20.04
|
|
# Broken on 22.04 <https://github.com/firezone/firezone/issues/3699>
|
|
- runs-on: ubuntu-22.04
|
|
- runs-on: windows-2019
|
|
- runs-on: windows-2022
|
|
runs-on: ${{ matrix.runs-on }}
|
|
defaults:
|
|
run:
|
|
# Must be in this dir for `pnpm` to work
|
|
working-directory: ./rust/gui-client
|
|
# The Windows client ignores RUST_LOG because it uses a settings file instead
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: ./.github/actions/setup-node
|
|
- uses: ./.github/actions/setup-rust
|
|
- uses: ./.github/actions/setup-tauri
|
|
timeout-minutes: 5
|
|
with:
|
|
runtime: true
|
|
- name: pnpm install
|
|
run: |
|
|
pnpm install
|
|
cp "node_modules/flowbite/dist/flowbite.min.js" "src/"
|
|
- name: Compile TypeScript
|
|
run: pnpm tsc
|
|
- name: Compile Tailwind
|
|
run: pnpm tailwindcss -i src/input.css -o src/output.css
|
|
- name: Build client
|
|
run: cargo build -p firezone-gui-client
|
|
- uses: taiki-e/install-action@v2
|
|
with:
|
|
tool: dump_syms,minidump-stackwalk
|
|
- name: Run smoke test
|
|
working-directory: ./rust
|
|
run: cargo run -p gui-smoke-test
|
|
|
|
headless-client:
|
|
name: headless-client-${{ matrix.test }}-${{ matrix.runs-on }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
# TODO: Add Windows as part of issue #3782
|
|
runs-on: [ubuntu-20.04, ubuntu-22.04]
|
|
test: [linux-group, token-path]
|
|
runs-on: ${{ matrix.runs-on }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: ./.github/actions/setup-rust
|
|
- uses: ./.github/actions/setup-tauri
|
|
timeout-minutes: 5
|
|
- run: scripts/tests/${{ matrix.test }}.sh
|
|
name: "test script"
|
|
shell: bash
|
|
working-directory: ./
|