From 49f399a9b21225f5a92092c786fded203d26a413 Mon Sep 17 00:00:00 2001 From: Tunglies Date: Mon, 2 Jun 2025 17:59:51 +0800 Subject: [PATCH] feat: update release naming conventions and add TAG_CHANNEL environment variable for autobuild workflow --- .github/workflows/alpha.yml | 162 +++++++++----------------------- .github/workflows/autobuild.yml | 23 ++--- 2 files changed, 58 insertions(+), 127 deletions(-) diff --git a/.github/workflows/alpha.yml b/.github/workflows/alpha.yml index 386cceae5..825d7ce26 100644 --- a/.github/workflows/alpha.yml +++ b/.github/workflows/alpha.yml @@ -2,79 +2,23 @@ name: Alpha Build on: workflow_dispatch: - # schedule: - # UTC+8 0,6,12,18 - # - cron: "0 16,22,4,10 * * *" + push: + tags: + - "v*.*.*-alpha*" permissions: write-all env: + TAG_NAME: alpha + TAG_CHANNEL: Alpha CARGO_INCREMENTAL: 0 RUST_BACKTRACE: short concurrency: - # only allow per workflow per commit (and not pr) to run at a time group: "${{ github.workflow }} - ${{ github.head_ref || github.ref }}" - cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} + cancel-in-progress: ${{ github.ref != 'refs/heads/dev' }} jobs: - check_commit: - runs-on: ubuntu-latest - outputs: - should_run: ${{ steps.check.outputs.should_run }} - steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - fetch-depth: 2 - - - name: Check if version changed or src changed - id: check - run: | - # For manual workflow_dispatch, always run - if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then - echo "should_run=true" >> $GITHUB_OUTPUT - exit 0 - fi - - # Store current version from package.json - CURRENT_VERSION=$(cat package.json | jq -r '.version') - echo "Current version: $CURRENT_VERSION" - - # Get the previous commit's package.json version - git checkout HEAD~1 package.json - PREVIOUS_VERSION=$(cat package.json | jq -r '.version') - echo "Previous version: $PREVIOUS_VERSION" - - # Reset back to current commit - git checkout HEAD package.json - - # Check if version changed - if [ "$CURRENT_VERSION" != "$PREVIOUS_VERSION" ]; then - echo "Version changed from $PREVIOUS_VERSION to $CURRENT_VERSION" - echo "should_run=true" >> $GITHUB_OUTPUT - exit 0 - fi - - # Check if src or src-tauri directories changed - CURRENT_SRC_HASH=$(git rev-parse HEAD:src) - PREVIOUS_SRC_HASH=$(git rev-parse HEAD~1:src 2>/dev/null || echo "") - CURRENT_TAURI_HASH=$(git rev-parse HEAD:src-tauri 2>/dev/null || echo "") - PREVIOUS_TAURI_HASH=$(git rev-parse HEAD~1:src-tauri 2>/dev/null || echo "") - - echo "Current src hash: $CURRENT_SRC_HASH" - echo "Previous src hash: $PREVIOUS_SRC_HASH" - echo "Current tauri hash: $CURRENT_TAURI_HASH" - echo "Previous tauri hash: $PREVIOUS_TAURI_HASH" - - if [ "$CURRENT_SRC_HASH" != "$PREVIOUS_SRC_HASH" ] || [ "$CURRENT_TAURI_HASH" != "$PREVIOUS_TAURI_HASH" ]; then - echo "Source directories changed" - echo "should_run=true" >> $GITHUB_OUTPUT - else - echo "Version and source directories unchanged" - echo "should_run=false" >> $GITHUB_OUTPUT - fi - delete_old_assets: - needs: check_commit - if: ${{ needs.check_commit.outputs.should_run == 'true' }} + name: Delete Old Alpha Release Assets + if: ${{ github.ref == 'refs/heads/dev' }} runs-on: ubuntu-latest steps: - name: Delete Old Alpha Release Assets @@ -128,22 +72,18 @@ jobs: - name: Checkout repository uses: actions/checkout@v4 - - name: Fetch Alpha update logs - id: fetch_alpha_logs + - name: Fetch UPDATE logs + id: fetch_update_logs run: | - # Check if UPDATELOG.md exists if [ -f "UPDATELOG.md" ]; then - # Extract the section starting with ## and containing -alpha until the next ## or end of file - # ALPHA_LOGS=$(awk '/^## .*-alpha/{flag=1; print; next} /^## /{flag=0} flag' UPDATELOG.md) - ALPHA_LOGS=$(awk '/^## v/{if(flag) exit; flag=1} flag' UPDATELOG.md) - - if [ -n "$ALPHA_LOGS" ]; then - echo "Found alpha update logs" - echo "ALPHA_LOGS<> $GITHUB_ENV - echo "$ALPHA_LOGS" >> $GITHUB_ENV + UPDATE_LOGS=$(awk '/^## v/{if(flag) exit; flag=1} flag' UPDATELOG.md) + if [ -n "$UPDATE_LOGS" ]; then + echo "Found update logs" + echo "UPDATE_LOGS<> $GITHUB_ENV + echo "$UPDATE_LOGS" >> $GITHUB_ENV echo "EOF" >> $GITHUB_ENV else - echo "No alpha sections found in UPDATELOG.md" + echo "No update sections found in UPDATELOG.md" fi else echo "UPDATELOG.md file not found" @@ -156,17 +96,15 @@ jobs: shell: bash - run: | - # 检查 ALPHA_LOGS 是否存在,如果不存在则使用默认消息 - if [ -z "$ALPHA_LOGS" ]; then - echo "No alpha logs found, using default message" - ALPHA_LOGS="More new features are now supported. Check for detailed changelog soon." + if [ -z "$UPDATE_LOGS" ]; then + echo "No update logs found, using default message" + UPDATE_LOGS="More new features are now supported. Check for detailed changelog soon." else - echo "Using found alpha logs" + echo "Using found update logs" fi - # 生成 release.txt 文件 cat > release.txt << EOF - $ALPHA_LOGS + $UPDATE_LOGS ## 我应该下载哪个版本? @@ -189,7 +127,6 @@ jobs: - arm64架构: arm64_fixed_webview2-setup.exe ### FAQ - - [常见问题](https://clash-verge-rev.github.io/faq/windows.html) ### 稳定机场VPN推荐 @@ -201,14 +138,15 @@ jobs: - name: Upload Release uses: softprops/action-gh-release@v2 with: - tag_name: alpha - name: "Clash Verge Rev Alpha" + tag_name: ${{ env.TAG_NAME }} + name: "Clash Verge Rev ${{ env.TAG_CHANNEL }}" body_path: release.txt prerelease: true token: ${{ secrets.GITHUB_TOKEN }} generate_release_notes: true - alpha: + alpha-x86-windows-macos-linux: + name: Alpha x86 Windows, MacOS and Linux needs: update_tag strategy: fail-fast: false @@ -224,7 +162,6 @@ jobs: target: x86_64-apple-darwin - os: ubuntu-22.04 target: x86_64-unknown-linux-gnu - runs-on: ${{ matrix.os }} steps: - name: Checkout Repository @@ -264,11 +201,8 @@ jobs: pnpm i pnpm check ${{ matrix.target }} - - name: Release Alpha Version - run: pnpm release-alpha-version - - - name: Patch Alpha Hash - run: pnpm fix-alpha-version + - name: Release ${{ env.TAG_CHANNEL }} Version + run: pnpm release-version ${{ env.TAG_NAME }} - name: Tauri build uses: tauri-apps/tauri-action@v0 @@ -284,15 +218,16 @@ jobs: APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }} APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} with: - tagName: alpha - releaseName: "Clash Verge Rev Alpha" + tagName: ${{ env.TAG_NAME }} + releaseName: "Clash Verge Rev ${{ env.TAG_CHANNEL }}" releaseBody: "More new features are now supported." releaseDraft: false prerelease: true tauriScript: pnpm args: --target ${{ matrix.target }} - alpha-for-linux-arm: + alpha-arm-linux: + name: Alpha ARM Linux needs: update_tag strategy: fail-fast: false @@ -336,14 +271,11 @@ jobs: pnpm i pnpm check ${{ matrix.target }} - - name: Release Alpha Version - run: pnpm release-alpha-version + - name: Release ${{ env.TAG_CHANNEL }} Version + run: pnpm release-version ${{ env.TAG_NAME }} - - name: Patch Alpha Hash - run: pnpm fix-alpha-version - - - name: "Setup for linux" - run: |- + - name: Setup for linux + run: | sudo ls -lR /etc/apt/ cat > /tmp/sources.list << EOF @@ -377,14 +309,14 @@ jobs: patchelf:${{ matrix.arch }} \ librsvg2-dev:${{ matrix.arch }} - - name: "Install aarch64 tools" + - name: Install aarch64 tools if: matrix.target == 'aarch64-unknown-linux-gnu' run: | sudo apt install -y \ gcc-aarch64-linux-gnu \ g++-aarch64-linux-gnu - - name: "Install armv7 tools" + - name: Install armv7 tools if: matrix.target == 'armv7-unknown-linux-gnueabihf' run: | sudo apt install -y \ @@ -417,15 +349,16 @@ jobs: - name: Upload Release uses: softprops/action-gh-release@v2 with: - tag_name: alpha - name: "Clash Verge Rev Alpha" + tag_name: ${{ env.TAG_NAME }} + name: "Clash Verge Rev ${{ env.TAG_CHANNEL }}" prerelease: true token: ${{ secrets.GITHUB_TOKEN }} files: | src-tauri/target/${{ matrix.target }}/release/bundle/deb/*.deb src-tauri/target/${{ matrix.target }}/release/bundle/rpm/*.rpm - alpha-for-fixed-webview2: + alpha-x86-arm-windows_webview2: + name: Alpha x86 and ARM Windows with WebView2 needs: update_tag strategy: fail-fast: false @@ -467,11 +400,8 @@ jobs: pnpm i pnpm check ${{ matrix.target }} - - name: Release Alpha Version - run: pnpm release-alpha-version - - - name: Patch Alpha Hash - run: pnpm fix-alpha-version + - name: Release ${{ env.TAG_CHANNEL }} Version + run: pnpm release-version ${{ env.TAG_NAME }} - name: Download WebView2 Runtime run: | @@ -515,13 +445,13 @@ jobs: - name: Upload Release uses: softprops/action-gh-release@v2 with: - tag_name: alpha - name: "Clash Verge Rev Alpha" + tag_name: ${{ env.TAG_NAME }} + name: "Clash Verge Rev ${{ env.TAG_CHANNEL }}" prerelease: true token: ${{ secrets.GITHUB_TOKEN }} files: src-tauri/target/${{ matrix.target }}/release/bundle/nsis/*setup* - name: Portable Bundle - run: pnpm portable-fixed-webview2 ${{ matrix.target }} --alpha + run: pnpm portable-fixed-webview2 ${{ matrix.target }} --${{ env.TAG_NAME }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/autobuild.yml b/.github/workflows/autobuild.yml index f41c7f970..d77d7069c 100644 --- a/.github/workflows/autobuild.yml +++ b/.github/workflows/autobuild.yml @@ -8,6 +8,7 @@ on: permissions: write-all env: TAG_NAME: autobuild + TAG_CHANNEL: AutoBuild CARGO_INCREMENTAL: 0 RUST_BACKTRACE: short concurrency: @@ -143,7 +144,7 @@ jobs: uses: softprops/action-gh-release@v2 with: tag_name: ${{ env.TAG_NAME }} - name: "Clash Verge Rev AutoBuild" + name: "Clash Verge Rev ${{ env.TAG_CHANNEL }}" body_path: release.txt prerelease: true token: ${{ secrets.GITHUB_TOKEN }} @@ -205,8 +206,8 @@ jobs: pnpm i pnpm check ${{ matrix.target }} - - name: Release Autobuild Version - run: pnpm release-version autobuild + - name: Release ${{ env.TAG_CHANNEL }} Version + run: pnpm release-version ${{ env.TAG_NAME }} - name: Tauri build uses: tauri-apps/tauri-action@v0 @@ -223,7 +224,7 @@ jobs: APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }} with: tagName: ${{ env.TAG_NAME }} - releaseName: "Clash Verge Rev AutoBuild" + releaseName: "Clash Verge Rev ${{ env.TAG_CHANNEL }}" releaseBody: "More new features are now supported." releaseDraft: false prerelease: true @@ -275,8 +276,8 @@ jobs: pnpm i pnpm check ${{ matrix.target }} - - name: Release Autobuild Version - run: pnpm release-version autobuild + - name: Release ${{ env.TAG_CHANNEL }} Version + run: pnpm release-version ${{ env.TAG_NAME }} - name: Setup for linux run: | @@ -354,7 +355,7 @@ jobs: uses: softprops/action-gh-release@v2 with: tag_name: ${{ env.TAG_NAME }} - name: "Clash Verge Rev AutoBuild" + name: "Clash Verge Rev ${{ env.TAG_CHANNEL }}" prerelease: true token: ${{ secrets.GITHUB_TOKEN }} files: | @@ -404,8 +405,8 @@ jobs: pnpm i pnpm check ${{ matrix.target }} - - name: Release Autobuild Version - run: pnpm release-version autobuild + - name: Release ${{ env.TAG_CHANNEL }} Version + run: pnpm release-version ${{ env.TAG_NAME }} - name: Download WebView2 Runtime run: | @@ -450,12 +451,12 @@ jobs: uses: softprops/action-gh-release@v2 with: tag_name: ${{ env.TAG_NAME }} - name: "Clash Verge Rev AutoBuild" + name: "Clash Verge Rev ${{ env.TAG_CHANNEL }}" prerelease: true token: ${{ secrets.GITHUB_TOKEN }} files: src-tauri/target/${{ matrix.target }}/release/bundle/nsis/*setup* - name: Portable Bundle - run: pnpm portable-fixed-webview2 ${{ matrix.target }} --autobuild + run: pnpm portable-fixed-webview2 ${{ matrix.target }} --${{ env.TAG_NAME }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}