From d45d994307d04952a819efa075f28cb3af54a719 Mon Sep 17 00:00:00 2001 From: Glavo Date: Thu, 18 Dec 2025 21:08:30 +0800 Subject: [PATCH] =?UTF-8?q?=E5=B0=86=20Release=20=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E8=87=B3=20CNB=20(#5000)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/check-update.yml | 79 ------------------- .github/workflows/release.yml | 120 +++++++++++++++++++++++++++++ 2 files changed, 120 insertions(+), 79 deletions(-) delete mode 100644 .github/workflows/check-update.yml create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/check-update.yml b/.github/workflows/check-update.yml deleted file mode 100644 index c52cc0f05..000000000 --- a/.github/workflows/check-update.yml +++ /dev/null @@ -1,79 +0,0 @@ -name: Check Update - -on: - workflow_dispatch: -# schedule: -# - cron: '30 * * * *' - -permissions: - contents: write - -jobs: - check-update: - if: ${{ github.repository_owner == 'HMCL-dev' }} - strategy: - fail-fast: false - max-parallel: 1 - matrix: - include: - - channel: dev - task: checkUpdateDev - - channel: stable - task: checkUpdateStable - runs-on: ubuntu-latest - name: check-update-${{ matrix.channel }} - steps: - - name: Checkout - uses: actions/checkout@v6 - with: - fetch-depth: 0 - fetch-tags: true - - name: Set up JDK - uses: actions/setup-java@v5 - with: - distribution: 'temurin' - java-version: '25' - - name: Fetch last version - run: ./gradlew ${{ matrix.task }} --no-daemon --info --stacktrace - - name: Check for existing tags - run: if [ -z "$(git tag -l "$HMCL_TAG_NAME")" ]; then echo "continue=true" >> $GITHUB_ENV; fi - - name: Download artifacts - if: ${{ env.continue == 'true' }} - run: | - wget "$HMCL_CI_DOWNLOAD_BASE_URI/HMCL-$HMCL_VERSION.exe" - wget "$HMCL_CI_DOWNLOAD_BASE_URI/HMCL-$HMCL_VERSION.exe.sha256" - wget "$HMCL_CI_DOWNLOAD_BASE_URI/HMCL-$HMCL_VERSION.jar" - wget "$HMCL_CI_DOWNLOAD_BASE_URI/HMCL-$HMCL_VERSION.jar.sha256" - wget "$HMCL_CI_DOWNLOAD_BASE_URI/HMCL-$HMCL_VERSION.sh" - wget "$HMCL_CI_DOWNLOAD_BASE_URI/HMCL-$HMCL_VERSION.sh.sha256" - - name: Generate release note - if: ${{ env.continue == 'true' }} - run: | - if [ "${{ matrix.channel }}" = "stable" ]; then - echo "**This version is a stable version.**" >> RELEASE_NOTE - echo "" >> RELEASE_NOTE - fi - echo "The full changelogs can be found on the website: https://docs.hmcl.net/changelog/${{ matrix.channel }}.html" >> RELEASE_NOTE - echo "" >> RELEASE_NOTE - echo "*Notice: changelogs are written in Chinese.*" >> RELEASE_NOTE - echo "" >> RELEASE_NOTE - echo "| File Name | SHA-256 Checksum |" >> RELEASE_NOTE - echo "| --- | --- |" >> RELEASE_NOTE - echo "| [HMCL-$HMCL_VERSION.exe]($GH_DOWNLOAD_BASE_URL/v$HMCL_VERSION/HMCL-$HMCL_VERSION.exe) | \`$(cat HMCL-$HMCL_VERSION.exe.sha256)\` |" >> RELEASE_NOTE - echo "| [HMCL-$HMCL_VERSION.jar]($GH_DOWNLOAD_BASE_URL/v$HMCL_VERSION/HMCL-$HMCL_VERSION.jar) | \`$(cat HMCL-$HMCL_VERSION.jar.sha256)\` |" >> RELEASE_NOTE - echo "| [HMCL-$HMCL_VERSION.sh]($GH_DOWNLOAD_BASE_URL/v$HMCL_VERSION/HMCL-$HMCL_VERSION.sh) | \`$(cat HMCL-$HMCL_VERSION.sh.sha256)\` |" >> RELEASE_NOTE - env: - GH_DOWNLOAD_BASE_URL: https://github.com/${{ github.repository }}/releases/download - - name: Create release - if: ${{ env.continue == 'true' }} - run: | - gh release create "${{ env.HMCL_TAG_NAME }}" \ - "HMCL-${{ env.HMCL_VERSION }}.exe" \ - "HMCL-${{ env.HMCL_VERSION }}.jar" \ - "HMCL-${{ env.HMCL_VERSION }}.sh" \ - --target "${{ env.HMCL_COMMIT_SHA }}" \ - --title "${{ env.HMCL_TAG_NAME }}" \ - --notes-file RELEASE_NOTE \ - --prerelease - env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..dad921040 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,120 @@ +name: Create Release + +on: + workflow_dispatch: +# schedule: +# - cron: '30 * * * *' + +permissions: + contents: write + +jobs: + check-update: + if: ${{ github.repository_owner == 'HMCL-dev' }} + strategy: + fail-fast: false + max-parallel: 1 + matrix: + include: + - channel: dev + task: checkUpdateDev + - channel: stable + task: checkUpdateStable + runs-on: ubuntu-latest + name: check-update-${{ matrix.channel }} + steps: + - name: Checkout + uses: actions/checkout@v6 + with: + fetch-depth: 0 + fetch-tags: true + - name: Set up JDK + uses: actions/setup-java@v5 + with: + distribution: 'temurin' + java-version: '25' + - name: Fetch last version + run: ./gradlew ${{ matrix.task }} --no-daemon --info --stacktrace + - name: Check for existing tags + run: if [ -z "$(git tag -l "$HMCL_TAG_NAME")" ]; then echo "continue=true" >> $GITHUB_ENV; fi + - name: Download artifacts + if: ${{ env.continue == 'true' }} + run: | + wget "$HMCL_CI_DOWNLOAD_BASE_URI/HMCL-$HMCL_VERSION.exe" + wget "$HMCL_CI_DOWNLOAD_BASE_URI/HMCL-$HMCL_VERSION.exe.sha256" + wget "$HMCL_CI_DOWNLOAD_BASE_URI/HMCL-$HMCL_VERSION.jar" + wget "$HMCL_CI_DOWNLOAD_BASE_URI/HMCL-$HMCL_VERSION.jar.sha256" + wget "$HMCL_CI_DOWNLOAD_BASE_URI/HMCL-$HMCL_VERSION.sh" + wget "$HMCL_CI_DOWNLOAD_BASE_URI/HMCL-$HMCL_VERSION.sh.sha256" + - name: Verify artifacts + if: ${{ env.continue == 'true' }} + run: | + export JAR_SHA256=$(cat HMCL-$HMCL_VERSION.jar.sha256 | tr -d '\n') + export EXE_SHA256=$(cat HMCL-$HMCL_VERSION.exe.sha256 | tr -d '\n') + export SH_SHA256=$(cat HMCL-$HMCL_VERSION.sh.sha256 | tr -d '\n') + + echo "$JAR_SHA256 HMCL-$HMCL_VERSION.jar" | sha256sum -c + echo "$EXE_SHA256 HMCL-$HMCL_VERSION.exe" | sha256sum -c + echo "$SH_SHA256 HMCL-$HMCL_VERSION.sh" | sha256sum -c + - name: Generate release note + if: ${{ env.continue == 'true' }} + run: | + # GitHub Release Note + echo " **[Changelog](https://docs.hmcl.net/changelog/${{ matrix.channel }}.html#HMCL-$HMCL_VERSION)** (Chinese)" >> RELEASE_NOTE + echo "" >> RELEASE_NOTE + echo "| File | SHA-256 Checksum |" >> RELEASE_NOTE + echo "| --- | --- |" >> RELEASE_NOTE + echo "| [HMCL-$HMCL_VERSION.exe]($GH_DOWNLOAD_BASE_URL/v$HMCL_VERSION/HMCL-$HMCL_VERSION.exe) | \`$(cat HMCL-$HMCL_VERSION.exe.sha256)\` |" >> RELEASE_NOTE + echo "| [HMCL-$HMCL_VERSION.jar]($GH_DOWNLOAD_BASE_URL/v$HMCL_VERSION/HMCL-$HMCL_VERSION.jar) | \`$(cat HMCL-$HMCL_VERSION.jar.sha256)\` |" >> RELEASE_NOTE + echo "| [HMCL-$HMCL_VERSION.sh]($GH_DOWNLOAD_BASE_URL/v$HMCL_VERSION/HMCL-$HMCL_VERSION.sh) | \`$(cat HMCL-$HMCL_VERSION.sh.sha256)\` |" >> RELEASE_NOTE + + # CNB Release Note + echo "[更新日志](https://docs.hmcl.net/changelog/${{ matrix.channel }}.html#HMCL-$HMCL_VERSION)" >> CNB_RELEASE_NOTE + echo "" >> CNB_RELEASE_NOTE + echo "| 文件 | SHA-256 校验码 |" >> CNB_RELEASE_NOTE + echo "| :--- | --- |" >> CNB_RELEASE_NOTE + echo "| [HMCL-$HMCL_VERSION.exe]($CNB_DOWNLOAD_BASE_URL/v$HMCL_VERSION/HMCL-$HMCL_VERSION.exe) | \`$(cat HMCL-$HMCL_VERSION.exe.sha256)\` |" >> CNB_RELEASE_NOTE + echo "| [HMCL-$HMCL_VERSION.jar]($CNB_DOWNLOAD_BASE_URL/v$HMCL_VERSION/HMCL-$HMCL_VERSION.jar) | \`$(cat HMCL-$HMCL_VERSION.jar.sha256)\` |" >> CNB_RELEASE_NOTE + echo "| [HMCL-$HMCL_VERSION.sh]($CNB_DOWNLOAD_BASE_URL/v$HMCL_VERSION/HMCL-$HMCL_VERSION.sh) | \`$(cat HMCL-$HMCL_VERSION.sh.sha256)\` |" >> CNB_RELEASE_NOTE + env: + GH_DOWNLOAD_BASE_URL: https://github.com/${{ github.repository }}/releases/download + CNB_DOWNLOAD_BASE_URL: https://cnb.cool/HMCL-dev/HMCL/-/releases/download + - name: Create GitHub release + if: ${{ env.continue == 'true' }} + run: | + gh release create "${{ env.HMCL_TAG_NAME }}" \ + "HMCL-${{ env.HMCL_VERSION }}.exe" \ + "HMCL-${{ env.HMCL_VERSION }}.jar" \ + "HMCL-${{ env.HMCL_VERSION }}.sh" \ + --target "${{ env.HMCL_COMMIT_SHA }}" \ + --title "${{ env.HMCL_TAG_NAME }}" \ + --notes-file RELEASE_NOTE \ + --prerelease + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + - name: Install git-cnb + if: ${{ env.continue == 'true' }} + run: go install "cnb.cool/looc/git-cnb@$GIT_CNB_VERSION" + env: + GIT_CNB_VERSION: '1.1.2' + - name: Create CNB release + if: ${{ env.continue == 'true' }} + run: | + ~/go/bin/git-cnb release create \ + --repo "$CNB_REPO" \ + --tag "v$HMCL_VERSION" \ + --name "HMCL $HMCL_VERSION" \ + --body "$(cat CNB_RELEASE_NOTE)" \ + --prerelease true + + echo "Uploading HMCL-$HMCL_VERSION.jar" + ~/go/bin/git-cnb release asset-upload --repo="$CNB_REPO" --tag-name "v$HMCL_VERSION" --file-name "HMCL-$HMCL_VERSION.jar" + + echo "Uploading HMCL-$HMCL_VERSION.exe" + ~/go/bin/git-cnb release asset-upload --repo="$CNB_REPO" --tag-name "v$HMCL_VERSION" --file-name "HMCL-$HMCL_VERSION.exe" + + echo "Uploading HMCL-$HMCL_VERSION.sh" + ~/go/bin/git-cnb release asset-upload --repo="$CNB_REPO" --tag-name "v$HMCL_VERSION" --file-name "HMCL-$HMCL_VERSION.sh" + env: + CNB_TOKEN: ${{ secrets.CNB_SYNC_TOKEN }} + CNB_REPO: HMCL-dev/HMCL