From d019f3d5bdde02fb547dedd121e747751bfe64a2 Mon Sep 17 00:00:00 2001 From: overtrue Date: Wed, 18 Jun 2025 10:53:16 +0800 Subject: [PATCH] refactor: optimize ossutil2 installation in CI workflow --- .github/workflows/build.yml | 75 +++++++++++++++++++++++++++---------- 1 file changed, 55 insertions(+), 20 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 03c1ec03..6a08caba 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -180,14 +180,14 @@ jobs: if [[ "$GLIBC" != "default" ]]; then BIN_NAME="${BIN_NAME}.glibc${GLIBC}" fi - + # Windows systems use exe suffix, and other systems do not have suffix if [[ "${{ matrix.variant.target }}" == *"windows"* ]]; then BIN_NAME="${BIN_NAME}.exe" else BIN_NAME="${BIN_NAME}.bin" fi - + echo "Binary name will be: $BIN_NAME" echo "::group::Building rustfs" @@ -265,17 +265,50 @@ jobs: path: ${{ steps.package.outputs.artifact_name }}.zip retention-days: 7 + # Install ossutil2 tool for OSS upload + - name: Install ossutil2 + if: startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/main' + shell: bash + run: | + echo "::group::Installing ossutil2" + # Download and install ossutil based on platform + if [ "${{ runner.os }}" = "Linux" ]; then + curl -o ossutil.zip https://gosspublic.alicdn.com/ossutil/v2/2.1.1/ossutil-2.1.1-linux-amd64.zip + unzip -o ossutil.zip + chmod 755 ossutil-2.1.1-linux-amd64/ossutil + sudo mv ossutil-2.1.1-linux-amd64/ossutil /usr/local/bin/ + rm -rf ossutil.zip ossutil-2.1.1-linux-amd64 + elif [ "${{ runner.os }}" = "macOS" ]; then + if [ "$(uname -m)" = "arm64" ]; then + curl -o ossutil.zip https://gosspublic.alicdn.com/ossutil/v2/2.1.1/ossutil-2.1.1-mac-arm64.zip + else + curl -o ossutil.zip https://gosspublic.alicdn.com/ossutil/v2/2.1.1/ossutil-2.1.1-mac-amd64.zip + fi + unzip -o ossutil.zip + chmod 755 ossutil-*/ossutil + sudo mv ossutil-*/ossutil /usr/local/bin/ + rm -rf ossutil.zip ossutil-* + elif [ "${{ runner.os }}" = "Windows" ]; then + curl -o ossutil.zip https://gosspublic.alicdn.com/ossutil/v2/2.1.1/ossutil-2.1.1-windows-amd64.zip + unzip -o ossutil.zip + mv ossutil-*/ossutil.exe /usr/bin/ossutil.exe + rm -rf ossutil.zip ossutil-* + fi + echo "ossutil2 installation completed" + - name: Upload to Aliyun OSS if: startsWith(github.ref, 'refs/tags/') || github.ref == 'refs/heads/main' - uses: JohnGuan/oss-upload-action@main - with: - key-id: ${{ secrets.ALICLOUDOSS_KEY_ID }} - key-secret: ${{ secrets.ALICLOUDOSS_KEY_SECRET }} - region: oss-cn-beijing - bucket: rustfs-artifacts - assets: | - ${{ steps.package.outputs.artifact_name }}.zip:/artifacts/rustfs/${{ steps.package.outputs.artifact_name }}.zip - ${{ steps.package.outputs.artifact_name }}.zip:/artifacts/rustfs/${{ steps.package.outputs.artifact_name }}.latest.zip + shell: bash + env: + OSSUTIL_ACCESS_KEY_ID: ${{ secrets.ALICLOUDOSS_KEY_ID }} + OSSUTIL_ACCESS_KEY_SECRET: ${{ secrets.ALICLOUDOSS_KEY_SECRET }} + OSSUTIL_ENDPOINT: https://oss-cn-beijing.aliyuncs.com + run: | + echo "::group::Uploading files to OSS" + # Upload the artifact file to two different paths + ossutil cp "${{ steps.package.outputs.artifact_name }}.zip" "oss://rustfs-artifacts/artifacts/rustfs/${{ steps.package.outputs.artifact_name }}.zip" --force + ossutil cp "${{ steps.package.outputs.artifact_name }}.zip" "oss://rustfs-artifacts/artifacts/rustfs/${{ steps.package.outputs.artifact_name }}.latest.zip" --force + echo "Successfully uploaded artifacts to OSS" # Determine whether to perform GUI construction based on conditions - name: Prepare for GUI build @@ -393,15 +426,17 @@ jobs: # Upload GUI to Alibaba Cloud OSS - name: Upload GUI to Aliyun OSS if: startsWith(github.ref, 'refs/tags/') - uses: JohnGuan/oss-upload-action@main - with: - key-id: ${{ secrets.ALICLOUDOSS_KEY_ID }} - key-secret: ${{ secrets.ALICLOUDOSS_KEY_SECRET }} - region: oss-cn-beijing - bucket: rustfs-artifacts - assets: | - ${{ steps.build_gui.outputs.gui_artifact_name }}.zip:/artifacts/rustfs/${{ steps.build_gui.outputs.gui_artifact_name }}.zip - ${{ steps.build_gui.outputs.gui_artifact_name }}.zip:/artifacts/rustfs/${{ steps.build_gui.outputs.gui_artifact_name }}.latest.zip + shell: bash + env: + OSSUTIL_ACCESS_KEY_ID: ${{ secrets.ALICLOUDOSS_KEY_ID }} + OSSUTIL_ACCESS_KEY_SECRET: ${{ secrets.ALICLOUDOSS_KEY_SECRET }} + OSSUTIL_ENDPOINT: https://oss-cn-beijing.aliyuncs.com + run: | + echo "::group::Uploading GUI files to OSS" + # Upload the GUI artifact file to two different paths + ossutil cp "${{ steps.build_gui.outputs.gui_artifact_name }}.zip" "oss://rustfs-artifacts/artifacts/rustfs/${{ steps.build_gui.outputs.gui_artifact_name }}.zip" --force + ossutil cp "${{ steps.build_gui.outputs.gui_artifact_name }}.zip" "oss://rustfs-artifacts/artifacts/rustfs/${{ steps.build_gui.outputs.gui_artifact_name }}.latest.zip" --force + echo "Successfully uploaded GUI artifacts to OSS" merge: