diff --git a/.github/workflows/artifacts.yaml b/.github/workflows/artifacts.yaml new file mode 100644 index 00000000..46f8294e --- /dev/null +++ b/.github/workflows/artifacts.yaml @@ -0,0 +1,128 @@ +name: binary artifacts + +permissions: + contents: read + +on: + push: + pull_request: + +jobs: + windows-binaries: + runs-on: windows-2022 # x86_64 + 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 dist --target x86_64-pc-windows-msvc + + - name: Upload binaries + uses: actions/upload-artifact@v4 + with: + name: rustls-ffi-x86_64-windows + path: dist + + linux-binaries: + runs-on: ubuntu-20.04 # x86_64. Using older Ubuntu for greater GLIBC compat. + 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 --locked --target x86_64-unknown-linux-gnu --features cert_compression --release --prefix dist + + - name: Upload binaries + uses: actions/upload-artifact@v4 + with: + name: rustls-ffi-x86_64-linux-gnu + path: dist + + macos-binaries-arm64: + runs-on: macos-14 # arm64. + 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 dist + + - name: Fix rpath + run: | + install_name_tool -id @rpath/librustls.dylib dist/lib/librustls.dylib + + - name: Upload binaries + uses: actions/upload-artifact@v4 + with: + name: rustls-ffi-arm64-macos + path: dist + + macos-binaries-x86_64: + runs-on: macos-13 # x86_64. + 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 dist + + - name: Fix rpath + run: | + install_name_tool -id @rpath/librustls.dylib dist/lib/librustls.dylib + + - name: Upload binaries + uses: actions/upload-artifact@v4 + with: + name: rustls-ffi-x86_64-macos + path: dist