From 26dabb435e751d83df4fc6a3cec975c1dcd17ad5 Mon Sep 17 00:00:00 2001 From: Daniel McCarney Date: Mon, 16 Dec 2024 12:37:26 -0500 Subject: [PATCH] ci: build binary artifacts for pushes/PRs * Windows (x86_64 MSVC) * Linux (x86_64 GNU) * Apple (ARM64) Binary artifacts are built in release mode using stable rust, with the default crypto provider (aws-lc-rs) and cert compression enabled. For FIPS, no cert-compression, the ring crypto provider, or other customization you will need to build from source. --- .github/workflows/artifacts.yaml | 92 ++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 .github/workflows/artifacts.yaml diff --git a/.github/workflows/artifacts.yaml b/.github/workflows/artifacts.yaml new file mode 100644 index 00000000..8040c1f6 --- /dev/null +++ b/.github/workflows/artifacts.yaml @@ -0,0 +1,92 @@ +name: binary artifacts + +permissions: + contents: read + +on: + push: + pull_request: + +jobs: + windows-binaries: + runs-on: windows-latest + steps: + - uses: actions/checkout@v4 + with: + persist-credentials: false + + - name: Install stable Rust + uses: dtolnay/rust-toolchain@stable + + - name: Install cargo-c + env: + LINK: https://github.com/lu-zero/cargo-c/releases/latest/download + CARGO_C_FILE: cargo-c-windows-msvc.zip + run: | + curl -L "$env:LINK/$env:CARGO_C_FILE" -o cargo-c-windows-msvc.zip + powershell -Command "Expand-Archive -Path cargo-c-windows-msvc.zip -DestinationPath $env:USERPROFILE\\.cargo\\bin -Force" + + - name: Build rusts-ffi + run: | + cargo cinstall --features cert_compression --release --prefix target/rustls-ffi + + - name: Upload binaries + uses: actions/upload-artifact@v4 + with: + name: rustls-ffi-x86_64-windows + path: target/rustls-ffi + + linux-binaries: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + persist-credentials: false + + - name: Install stable Rust + uses: dtolnay/rust-toolchain@stable + + - name: Install cargo-c (Ubuntu) + env: + LINK: https://github.com/lu-zero/cargo-c/releases/latest/download + CARGO_C_FILE: cargo-c-x86_64-unknown-linux-musl.tar.gz + run: | + curl -L $LINK/$CARGO_C_FILE | tar xz -C ~/.cargo/bin + + - name: Build rusts-ffi + run: | + cargo cinstall --features cert_compression --release --prefix target/rustls-ffi + + - name: Upload binaries + uses: actions/upload-artifact@v4 + with: + name: rustls-ffi-x86_64-linux-gnu + path: target/rustls-ffi + + macos-binaries: + runs-on: macos-latest + steps: + - uses: actions/checkout@v4 + with: + persist-credentials: false + + - name: Install stable Rust + uses: dtolnay/rust-toolchain@stable + + - name: Install cargo-c (macOS) + env: + LINK: https://github.com/lu-zero/cargo-c/releases/latest/download + CARGO_C_FILE: cargo-c-macos.zip + run: | + curl -L $LINK/$CARGO_C_FILE -o cargo-c-macos.zip + unzip cargo-c-macos.zip -d ~/.cargo/bin + + - name: Build rusts-ffi + run: | + cargo cinstall --features cert_compression --release --prefix target/rustls-ffi + + - name: Upload binaries + uses: actions/upload-artifact@v4 + with: + name: rustls-ffi-arm64-macos + path: target/rustls-ffi