From 526c4d5a612a87a5335a698cae426e5738790984 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=89=E6=AD=A3=E8=B6=85?= Date: Fri, 25 Jul 2025 01:10:04 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=E6=9E=84?= =?UTF-8?q?=E5=BB=BA=E5=B7=A5=E4=BD=9C=E6=B5=81=EF=BC=8C=E7=BB=9F=E4=B8=80?= =?UTF-8?q?=20latest=20=E6=96=87=E4=BB=B6=E5=A4=84=E7=90=86=E5=92=8C?= =?UTF-8?q?=E7=AE=80=E5=8C=96=E5=88=B6=E5=93=81=E4=B8=8A=E4=BC=A0=20(#293)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/build.yml | 130 ++++++++++++++++-------------------- 1 file changed, 59 insertions(+), 71 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3d29792e..a9681300 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -383,20 +383,66 @@ jobs: exit 1 fi + # Create latest version files right after the main package + LATEST_FILES="" + if [[ "$BUILD_TYPE" == "release" ]] || [[ "$BUILD_TYPE" == "prerelease" ]]; then + # Create latest version filename + # Convert from rustfs-linux-x86_64-musl-v1.0.0 to rustfs-linux-x86_64-musl-latest + LATEST_FILE="${PACKAGE_NAME%-v*}-latest.zip" + + echo "🔄 Creating latest version: ${PACKAGE_NAME}.zip -> $LATEST_FILE" + cp "${PACKAGE_NAME}.zip" "$LATEST_FILE" + + if [[ -f "$LATEST_FILE" ]]; then + echo "✅ Latest version created: $LATEST_FILE" + LATEST_FILES="$LATEST_FILE" + fi + elif [[ "$BUILD_TYPE" == "development" ]]; then + # Development builds (only main branch triggers development builds) + # Create main-latest version filename + # Convert from rustfs-linux-x86_64-dev-abc123 to rustfs-linux-x86_64-main-latest + MAIN_LATEST_FILE="${PACKAGE_NAME%-dev-*}-main-latest.zip" + + echo "🔄 Creating main-latest version: ${PACKAGE_NAME}.zip -> $MAIN_LATEST_FILE" + cp "${PACKAGE_NAME}.zip" "$MAIN_LATEST_FILE" + + if [[ -f "$MAIN_LATEST_FILE" ]]; then + echo "✅ Main-latest version created: $MAIN_LATEST_FILE" + LATEST_FILES="$MAIN_LATEST_FILE" + + # Also create a generic main-latest for Docker builds (Linux only) + if [[ "${{ matrix.platform }}" == "linux" ]]; then + DOCKER_MAIN_LATEST_FILE="rustfs-linux-${ARCH_WITH_VARIANT}-main-latest.zip" + + echo "🔄 Creating Docker main-latest version: ${PACKAGE_NAME}.zip -> $DOCKER_MAIN_LATEST_FILE" + cp "${PACKAGE_NAME}.zip" "$DOCKER_MAIN_LATEST_FILE" + + if [[ -f "$DOCKER_MAIN_LATEST_FILE" ]]; then + echo "✅ Docker main-latest version created: $DOCKER_MAIN_LATEST_FILE" + LATEST_FILES="$LATEST_FILES $DOCKER_MAIN_LATEST_FILE" + fi + fi + fi + fi + echo "package_name=${PACKAGE_NAME}" >> $GITHUB_OUTPUT echo "package_file=${PACKAGE_NAME}.zip" >> $GITHUB_OUTPUT + echo "latest_files=${LATEST_FILES}" >> $GITHUB_OUTPUT echo "build_type=${BUILD_TYPE}" >> $GITHUB_OUTPUT echo "version=${VERSION}" >> $GITHUB_OUTPUT echo "📦 Package created: ${PACKAGE_NAME}.zip" + if [[ -n "$LATEST_FILES" ]]; then + echo "📦 Latest files created: $LATEST_FILES" + fi echo "🔧 Build type: ${BUILD_TYPE}" echo "📊 Version: ${VERSION}" - - name: Upload artifacts + - name: Upload to GitHub artifacts uses: actions/upload-artifact@v4 with: name: ${{ steps.package.outputs.package_name }} - path: ${{ steps.package.outputs.package_file }} + path: "rustfs-*.zip" retention-days: ${{ startsWith(github.ref, 'refs/tags/') && 30 || 7 }} - name: Upload to Aliyun OSS @@ -466,73 +512,15 @@ jobs: echo "📤 Uploading release build to OSS release directory" fi - # Upload the package file to OSS - echo "Uploading ${{ steps.package.outputs.package_file }} to $OSS_PATH..." - $OSSUTIL_BIN cp "${{ steps.package.outputs.package_file }}" "$OSS_PATH" --force - - # For release and prerelease builds, also create a latest version - if [[ "$BUILD_TYPE" == "release" ]] || [[ "$BUILD_TYPE" == "prerelease" ]]; then - # Extract platform and arch from package name - PACKAGE_NAME="${{ steps.package.outputs.package_name }}" - - # Create latest version filename - # Convert from rustfs-linux-x86_64-v1.0.0 to rustfs-linux-x86_64-latest - LATEST_FILE="${PACKAGE_NAME%-v*}-latest.zip" - - # Copy the original file to latest version - cp "${{ steps.package.outputs.package_file }}" "$LATEST_FILE" - - # Upload the latest version - echo "Uploading latest version: $LATEST_FILE to $OSS_PATH..." - $OSSUTIL_BIN cp "$LATEST_FILE" "$OSS_PATH" --force - - echo "✅ Latest version uploaded: $LATEST_FILE" - fi - - # For development builds, create dev-latest version - if [[ "$BUILD_TYPE" == "development" ]]; then - # Extract platform and arch from package name - PACKAGE_NAME="${{ steps.package.outputs.package_name }}" - - # Create dev-latest version filename - # Convert from rustfs-linux-x86_64-dev-abc123 to rustfs-linux-x86_64-dev-latest - DEV_LATEST_FILE="${PACKAGE_NAME%-*}-latest.zip" - - # Copy the original file to dev-latest version - cp "${{ steps.package.outputs.package_file }}" "$DEV_LATEST_FILE" - - # Upload the dev-latest version - echo "Uploading dev-latest version: $DEV_LATEST_FILE to $OSS_PATH..." - $OSSUTIL_BIN cp "$DEV_LATEST_FILE" "$OSS_PATH" --force - - echo "✅ Dev-latest version uploaded: $DEV_LATEST_FILE" - - # For main branch builds, also create a main-latest version - if [[ "${{ github.ref }}" == "refs/heads/main" ]]; then - # Create main-latest version filename - # Convert from rustfs-linux-x86_64-dev-abc123 to rustfs-linux-x86_64-main-latest - MAIN_LATEST_FILE="${PACKAGE_NAME%-dev-*}-main-latest.zip" - - # Copy the original file to main-latest version - cp "${{ steps.package.outputs.package_file }}" "$MAIN_LATEST_FILE" - - # Upload the main-latest version - echo "Uploading main-latest version: $MAIN_LATEST_FILE to $OSS_PATH..." - $OSSUTIL_BIN cp "$MAIN_LATEST_FILE" "$OSS_PATH" --force - - echo "✅ Main-latest version uploaded: $MAIN_LATEST_FILE" - - # Also create a generic main-latest for Docker builds - if [[ "${{ matrix.platform }}" == "linux" ]]; then - # Use the same ARCH_WITH_VARIANT logic for Docker files - DOCKER_MAIN_LATEST_FILE="rustfs-linux-${ARCH_WITH_VARIANT}-main-latest.zip" - - cp "${{ steps.package.outputs.package_file }}" "$DOCKER_MAIN_LATEST_FILE" - $OSSUTIL_BIN cp "$DOCKER_MAIN_LATEST_FILE" "$OSS_PATH" --force - echo "✅ Docker main-latest version uploaded: $DOCKER_MAIN_LATEST_FILE" - fi + # Upload all rustfs zip files to OSS using glob pattern + echo "📤 Uploading all rustfs-*.zip files to $OSS_PATH..." + for zip_file in rustfs-*.zip; do + if [[ -f "$zip_file" ]]; then + echo "Uploading: $zip_file to $OSS_PATH..." + $OSSUTIL_BIN cp "$zip_file" "$OSS_PATH" --force + echo "✅ Uploaded: $zip_file" fi - fi + done echo "✅ Upload completed successfully" @@ -703,7 +691,7 @@ jobs: mkdir -p ./release-assets - # Copy and verify artifacts + # Copy and verify artifacts (including latest files created during build) ASSETS_COUNT=0 for file in ./artifacts/*.zip; do if [[ -f "$file" ]]; then @@ -719,7 +707,7 @@ jobs: cd ./release-assets - # Generate checksums + # Generate checksums for all files (including latest versions) if ls *.zip >/dev/null 2>&1; then sha256sum *.zip > SHA256SUMS sha512sum *.zip > SHA512SUMS @@ -734,7 +722,7 @@ jobs: echo "📦 Prepared assets:" ls -la - echo "🔢 Asset count: $ASSETS_COUNT" + echo "🔢 Total asset count: $ASSETS_COUNT" - name: Upload to GitHub Release env: