diff --git a/.github/workflows/autobuild.yml b/.github/workflows/autobuild.yml index 703d0d410..50355dc5c 100644 --- a/.github/workflows/autobuild.yml +++ b/.github/workflows/autobuild.yml @@ -2,15 +2,15 @@ name: Auto Build on: workflow_dispatch: -# schedule: -# UTC+8 0,6,12,18 -# - cron: "0 16,22,4,10 * * *" + schedule: + # UTC+8 0,6,12,18 + - cron: "0 16,22,4,10 * * *" permissions: write-all env: + TAG_NAME: autobuild 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' }} @@ -29,32 +29,26 @@ jobs: - 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 "") @@ -73,79 +67,74 @@ jobs: echo "should_run=false" >> $GITHUB_OUTPUT fi - # delete_old_assets: - # needs: check_commit - # if: ${{ needs.check_commit.outputs.should_run == 'true' }} - # runs-on: ubuntu-latest - # steps: - # - name: Delete Old Alpha Release Assets - # uses: actions/github-script@v7 - # with: - # github-token: ${{ secrets.GITHUB_TOKEN }} - # script: | - # const releaseTag = 'alpha'; + delete_old_assets: + name: Delete Old Autobuild Release Assets + needs: check_commit + if: ${{ needs.check_commit.outputs.should_run == 'true' }} + runs-on: ubuntu-latest + steps: + - name: Delete Old Autobuild Release Assets + uses: actions/github-script@v7 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + script: | + const releaseTag = '${{ env.TAG_NAME }}'; - # try { - # // Get the release by tag name - # const { data: release } = await github.rest.repos.getReleaseByTag({ - # owner: context.repo.owner, - # repo: context.repo.repo, - # tag: releaseTag - # }); + try { + const { data: release } = await github.rest.repos.getReleaseByTag({ + owner: context.repo.owner, + repo: context.repo.repo, + tag: releaseTag + }); - # console.log(`Found release with ID: ${release.id}`); + console.log(`Found release with ID: ${release.id}`); - # // Delete each asset - # if (release.assets && release.assets.length > 0) { - # console.log(`Deleting ${release.assets.length} assets`); + if (release.assets && release.assets.length > 0) { + console.log(`Deleting ${release.assets.length} assets`); - # for (const asset of release.assets) { - # console.log(`Deleting asset: ${asset.name} (${asset.id})`); - # await github.rest.repos.deleteReleaseAsset({ - # owner: context.repo.owner, - # repo: context.repo.repo, - # asset_id: asset.id - # }); - # } + for (const asset of release.assets) { + console.log(`Deleting asset: ${asset.name} (${asset.id})`); + await github.rest.repos.deleteReleaseAsset({ + owner: context.repo.owner, + repo: context.repo.repo, + asset_id: asset.id + }); + } - # console.log('All assets deleted successfully'); - # } else { - # console.log('No assets found to delete'); - # } - # } catch (error) { - # if (error.status === 404) { - # console.log('Release not found, nothing to delete'); - # } else { - # console.error('Error:', error); - # throw error; - # } - # } + console.log('All assets deleted successfully'); + } else { + console.log('No assets found to delete'); + } + } catch (error) { + if (error.status === 404) { + console.log('Release not found, nothing to delete'); + } else { + console.error('Error:', error); + throw error; + } + } update_tag: name: Update tag runs-on: ubuntu-latest - needs: check_commit + needs: [check_commit, delete_old_assets] if: ${{ needs.check_commit.outputs.should_run == 'true' }} steps: - 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" @@ -158,17 +147,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 ## 我应该下载哪个版本? @@ -191,7 +178,6 @@ jobs: - arm64架构: arm64_fixed_webview2-setup.exe ### FAQ - - [常见问题](https://clash-verge-rev.github.io/faq/windows.html) ### 稳定机场VPN推荐 @@ -203,7 +189,7 @@ jobs: - name: Upload Release uses: softprops/action-gh-release@v2 with: - tag_name: autobuild + tag_name: ${{ env.TAG_NAME }} name: "Clash Verge Rev AutoBuild" body_path: release.txt prerelease: true @@ -227,7 +213,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 @@ -284,8 +269,8 @@ 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 AutoBuild" releaseBody: "More new features are now supported." releaseDraft: false prerelease: true @@ -340,8 +325,8 @@ jobs: - name: Release Autobuild Version run: pnpm release-version autobuild - - name: "Setup for linux" - run: |- + - name: Setup for linux + run: | sudo ls -lR /etc/apt/ cat > /tmp/sources.list << EOF @@ -375,14 +360,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 \ @@ -415,7 +400,7 @@ jobs: - name: Upload Release uses: softprops/action-gh-release@v2 with: - tag_name: autobuild + tag_name: ${{ env.TAG_NAME }} name: "Clash Verge Rev AutoBuild" prerelease: true token: ${{ secrets.GITHUB_TOKEN }} @@ -511,7 +496,7 @@ jobs: - name: Upload Release uses: softprops/action-gh-release@v2 with: - tag_name: autobuild + tag_name: ${{ env.TAG_NAME }} name: "Clash Verge Rev AutoBuild" prerelease: true token: ${{ secrets.GITHUB_TOKEN }}