mirror of
https://github.com/outbackdingo/firezone.git
synced 2026-03-21 17:41:52 +00:00
Closes #5601 It looks like we can hit 100+ Mbps in theory. This covers Wintun, Tokio, and Windows OS overhead. It doesn't cover the cryptography or anything in connlib itself. The code is kinda messy but I'm not sure how to clean it up so I'll just leave it for review. This test should fail if there's any regressions in #5598. It fails if any packet is dropped or if the speed is under 100 Mbps ```[tasklist] ### Tasks - [x] Use `ip_packet::make` - [x] Switch to `cargo bench` - [x] Extract windows ARM PR - [x] Clean up wintun.dll install code - [x] Re-request review ```
159 lines
4.9 KiB
YAML
159 lines
4.9 KiB
YAML
---
|
|
name: Rust
|
|
"on":
|
|
workflow_call:
|
|
|
|
defaults:
|
|
run:
|
|
working-directory: ./rust
|
|
|
|
permissions:
|
|
contents: 'read'
|
|
id-token: 'write'
|
|
|
|
jobs:
|
|
bench:
|
|
name: bench-${{ matrix.runs-on }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
runs-on: [
|
|
windows-2019 # Only platform with a benchmark right now
|
|
]
|
|
runs-on: ${{ matrix.runs-on }}
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: ./.github/actions/setup-rust
|
|
id: setup-rust
|
|
- run: cargo bench ${{ steps.setup-rust.outputs.bench-packages }}
|
|
env:
|
|
RUST_LOG: "debug"
|
|
name: "cargo bench"
|
|
shell: bash
|
|
|
|
static-analysis:
|
|
name: static-analysis-${{ matrix.runs-on }}
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
# TODO: https://github.com/rust-lang/cargo/issues/5220
|
|
runs-on: [
|
|
ubuntu-22.04,
|
|
macos-14,
|
|
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
|
|
runs-on: [
|
|
ubuntu-20.04,
|
|
ubuntu-22.04,
|
|
macos-12,
|
|
macos-13,
|
|
macos-14,
|
|
windows-2019,
|
|
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:
|
|
runs-on: [
|
|
ubuntu-20.04,
|
|
ubuntu-22.04,
|
|
windows-2019,
|
|
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: ./
|