[SM-1444] Fix Windows GNU Builds #1772
Workflow file for this run
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: Build Rust Cross Platform | |
on: | |
workflow_call: | |
workflow_dispatch: | |
push: | |
branches: | |
- main | |
- rc | |
- hotfix-rc | |
pull_request: | |
jobs: | |
build_rust: | |
name: Build for ${{ matrix.settings.os }} ${{ matrix.settings.target }} | |
runs-on: ${{ matrix.settings.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
settings: | |
- os: macos-13 | |
target: x86_64-apple-darwin | |
- os: macos-13 | |
target: aarch64-apple-darwin | |
- os: windows-2022 | |
target: x86_64-pc-windows-msvc | |
- os: windows-2022 | |
target: x86_64-pc-windows-gnu | |
# caution: updating the linux runner OS version for GNU | |
# targets will likely break libbitwarden_c for older OS versions. | |
# prefer using oldest supported runner for for these targets | |
- os: ubuntu-22.04 | |
target: x86_64-unknown-linux-gnu | |
- os: ubuntu-22.04 | |
target: x86_64-unknown-linux-musl | |
- os: ubuntu-22.04 | |
target: aarch64-unknown-linux-musl | |
steps: | |
- name: Checkout | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 | |
- name: Install rust | |
uses: dtolnay/rust-toolchain@7b1c307e0dcbda6122208f10795a713336a9b35a # stable | |
with: | |
toolchain: stable | |
- name: Cache cargo registry | |
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3 | |
- uses: goto-bus-stop/setup-zig@7ab2955eb728f5440978d5824358023be3a2802d # v2.2.0 | |
if: ${{ contains(matrix.settings.target, 'musl') }} | |
with: | |
version: 0.12.0 | |
- name: Install Zigbuild | |
if: ${{ contains(matrix.settings.target, 'musl') }} | |
run: cargo install cargo-zigbuild --locked --git https://github.com/rust-cross/cargo-zigbuild --rev 6f7e1336c9cd13cf1b3704f93c40fcf84caaed6b # 0.18.4 | |
- name: Add build architecture | |
run: rustup target add ${{ matrix.settings.target }} | |
# Build Rust for musl | |
- name: Build Rust for - ${{ matrix.settings.target }} | |
if: ${{ contains(matrix.settings.target, 'musl') }} | |
env: | |
RUSTFLAGS: "-D warnings" | |
run: cargo zigbuild -p bitwarden-c --target ${{ matrix.settings.target }} --release | |
# Build Rust for windows-gnu | |
- name: Build Rust for - ${{ matrix.settings.target }} | |
if: ${{ matrix.settings.target == 'x86_64-pc-windows-gnu' }} | |
env: | |
RUSTFLAGS: "-D warnings" | |
run: cargo build -p bitwarden-c --target ${{ matrix.settings.target }} --profile=release-windows | |
# Build Rust for !musl && !windows-gnu | |
- name: Build Rust for - ${{ matrix.settings.target }} | |
if: ${{ !contains(matrix.settings.target, 'musl') && matrix.settings.target != 'x86_64-pc-windows-gnu' }} | |
env: | |
RUSTFLAGS: "-D warnings" | |
MACOSX_DEPLOYMENT_TARGET: "10.14" # allows using new macos runner versions while still supporting older systems | |
run: cargo build -p bitwarden-c --target ${{ matrix.settings.target }} --release | |
- name: Upload Artifact | |
uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 | |
with: | |
name: libbitwarden_c_files-${{ matrix.settings.target }} | |
path: | | |
target/${{ matrix.settings.target }}/release/*bitwarden_c* | |
target/${{ matrix.settings.target }}/release-windows/*bitwarden_c* |