From 4287b7b12abd8d208469cd960dc4320c44530fa9 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Wed, 1 Apr 2026 20:31:35 -0700 Subject: [PATCH] Add manual trigger to Rust volume server release build workflow (#8873) * Add manual trigger to Rust volume server release build workflow When triggered manually via workflow_dispatch, binaries are uploaded as downloadable workflow artifacts instead of release assets. On tag push the existing release upload behavior is unchanged. * Vendor OpenSSL for cross-compilation of Rust volume server The aarch64-unknown-linux-gnu build fails because openssl-sys cannot find OpenSSL via pkg-config when cross-compiling. Adding openssl with the vendored feature builds OpenSSL from source, fixing the issue. * Fix aarch64 cross-compilation: install libssl-dev:arm64 instead of vendoring OpenSSL The vendored OpenSSL feature breaks the S3 tier unit test by altering the TLS stack behavior. Instead, install the aarch64 OpenSSL dev libraries and point the build at them via OPENSSL_DIR/LIB_DIR/INCLUDE_DIR. --- .github/workflows/rust_binaries_release.yml | 40 ++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/.github/workflows/rust_binaries_release.yml b/.github/workflows/rust_binaries_release.yml index 1c1ed8bf8..4e19ab239 100644 --- a/.github/workflows/rust_binaries_release.yml +++ b/.github/workflows/rust_binaries_release.yml @@ -39,8 +39,16 @@ jobs: - name: Install cross-compilation tools if: matrix.cross run: | - sudo apt-get install -y gcc-aarch64-linux-gnu + sudo dpkg --add-architecture arm64 + sudo sed -i 's/^deb /deb [arch=amd64] /' /etc/apt/sources.list + echo "deb [arch=arm64] http://ports.ubuntu.com/ jammy main restricted universe multiverse" | sudo tee /etc/apt/sources.list.d/arm64.list + echo "deb [arch=arm64] http://ports.ubuntu.com/ jammy-updates main restricted universe multiverse" | sudo tee -a /etc/apt/sources.list.d/arm64.list + sudo apt-get update + sudo apt-get install -y gcc-aarch64-linux-gnu libssl-dev:arm64 echo "CARGO_TARGET_AARCH64_UNKNOWN_LINUX_GNU_LINKER=aarch64-linux-gnu-gcc" >> "$GITHUB_ENV" + echo "OPENSSL_DIR=/usr" >> "$GITHUB_ENV" + echo "OPENSSL_INCLUDE_DIR=/usr/include" >> "$GITHUB_ENV" + echo "OPENSSL_LIB_DIR=/usr/lib/aarch64-linux-gnu" >> "$GITHUB_ENV" - name: Cache cargo registry and target uses: actions/cache@v5 @@ -80,6 +88,7 @@ jobs: rm weed-volume-normal - name: Upload release assets + if: startsWith(github.ref, 'refs/tags/') uses: softprops/action-gh-release@v2 with: files: | @@ -88,6 +97,15 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Upload artifacts + if: ${{ !startsWith(github.ref, 'refs/tags/') }} + uses: actions/upload-artifact@v4 + with: + name: rust-volume-${{ matrix.asset_suffix }} + path: | + weed-volume_large_disk_${{ matrix.asset_suffix }}.tar.gz + weed-volume_${{ matrix.asset_suffix }}.tar.gz + build-rust-volume-darwin: permissions: contents: write @@ -147,6 +165,7 @@ jobs: rm weed-volume-normal - name: Upload release assets + if: startsWith(github.ref, 'refs/tags/') uses: softprops/action-gh-release@v2 with: files: | @@ -155,6 +174,15 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Upload artifacts + if: ${{ !startsWith(github.ref, 'refs/tags/') }} + uses: actions/upload-artifact@v4 + with: + name: rust-volume-${{ matrix.asset_suffix }} + path: | + weed-volume_large_disk_${{ matrix.asset_suffix }}.tar.gz + weed-volume_${{ matrix.asset_suffix }}.tar.gz + build-rust-volume-windows: permissions: contents: write @@ -206,6 +234,7 @@ jobs: rm weed-volume-normal.exe - name: Upload release assets + if: startsWith(github.ref, 'refs/tags/') uses: softprops/action-gh-release@v2 with: files: | @@ -213,3 +242,12 @@ jobs: weed-volume_windows_amd64.zip env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Upload artifacts + if: ${{ !startsWith(github.ref, 'refs/tags/') }} + uses: actions/upload-artifact@v4 + with: + name: rust-volume-windows_amd64 + path: | + weed-volume_large_disk_windows_amd64.zip + weed-volume_windows_amd64.zip