--- name: iOS - Build and test Rust FFI (mullvad-ios and mullvad-api) on: pull_request: paths: - .github/workflows/ios-rust-ffi.yml - clippy.toml - '**/*.rs' workflow_dispatch: permissions: {} jobs: build-ios: runs-on: macos-latest strategy: matrix: target: [aarch64-apple-ios, aarch64-apple-ios-sim] steps: - name: Checkout repository uses: actions/checkout@v4 - name: Checkout submodules run: | git config --global --add safe.directory '*' git submodule update --init --recursive ios/wireguard-apple - name: Install Protoc uses: arduino/setup-protoc@v3 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Install Rust run: rustup target add ${{ matrix.target }} - name: Build and test crates shell: bash env: RUSTFLAGS: --deny warnings # NOTE: Tests actually target macOS here. This is because we do not have an iOS runner # handy. run: | source env.sh time cargo build --locked --verbose --lib -p mullvad-ios -p mullvad-api --target ${{ matrix.target }} time cargo test --locked --verbose --lib -p mullvad-ios -p mullvad-api clippy-check-ios: runs-on: macos-latest strategy: matrix: target: [aarch64-apple-ios, aarch64-apple-ios-sim] steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install Protoc uses: arduino/setup-protoc@v3 with: repo-token: ${{ secrets.GITHUB_TOKEN }} - name: Install Rust run: | rustup target add ${{ matrix.target }} rustup component add clippy - name: Clippy check shell: bash env: RUSTFLAGS: --deny warnings run: | source env.sh time cargo clippy --locked --all-targets --no-default-features -p mullvad-ios -p mullvad-api \ --target ${{ matrix.target }} time cargo clippy --locked --all-targets --all-features -p mullvad-ios -p mullvad-api \ --target ${{ matrix.target }}