From 6c11182ec6ce0ed901c0f59c1f8cad40db6db9b4 Mon Sep 17 00:00:00 2001 From: Jarvis Date: Tue, 19 May 2026 08:58:59 +0800 Subject: [PATCH 1/2] Fix release title parsing for merged PRs --- .github/workflows/release.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 006489c..334c73d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -40,6 +40,9 @@ jobs: HEAD_COMMIT_MESSAGE: ${{ github.event.head_commit.message }} run: | title="${HEAD_COMMIT_MESSAGE%%$'\n'*}" + if [[ $title =~ ^(.*)\ \(#[0-9]+\)$ ]]; then + title="${BASH_REMATCH[1]}" + fi re="^feat: release v?([0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z.-]+)?)$" if [[ $title =~ $re ]]; then v=v${BASH_REMATCH[1]} From 2f524e951ebb5207153aabf0aba430344109e5a2 Mon Sep 17 00:00:00 2001 From: Jarvis Date: Tue, 19 May 2026 09:16:53 +0800 Subject: [PATCH 2/2] Add manual release workflow trigger --- .github/workflows/release.yml | 45 ++++++++++++++++++++++++----------- 1 file changed, 31 insertions(+), 14 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 334c73d..684d085 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,6 +1,11 @@ name: Release on: + workflow_dispatch: + inputs: + version: + description: "Release version, for example 0.1.0 or v0.1.0" + required: true push: branches: - "main" @@ -38,24 +43,36 @@ jobs: shell: bash env: HEAD_COMMIT_MESSAGE: ${{ github.event.head_commit.message }} + RELEASE_VERSION: ${{ inputs.version }} run: | - title="${HEAD_COMMIT_MESSAGE%%$'\n'*}" - if [[ $title =~ ^(.*)\ \(#[0-9]+\)$ ]]; then - title="${BASH_REMATCH[1]}" - fi - re="^feat: release v?([0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z.-]+)?)$" - if [[ $title =~ $re ]]; then - v=v${BASH_REMATCH[1]} - echo "version=${v}" >> $GITHUB_OUTPUT - echo "version_without_v=${BASH_REMATCH[1]}" >> $GITHUB_OUTPUT - if [[ ${BASH_REMATCH[1]} == *-* ]]; then - echo "is_prerelease=true" >> $GITHUB_OUTPUT + semver_re="^v?([0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z.-]+)?)$" + if [ -n "$RELEASE_VERSION" ]; then + if [[ $RELEASE_VERSION =~ $semver_re ]]; then + version="${BASH_REMATCH[1]}" else - echo "is_prerelease=false" >> $GITHUB_OUTPUT + echo "version input is not correct (expected: X.Y.Z[-prerelease])" + exit 1 fi else - echo "commit format is not correct (expected: feat: release vX.Y.Z[-prerelease])" - exit 1 + title="${HEAD_COMMIT_MESSAGE%%$'\n'*}" + if [[ $title =~ ^(.*)\ \(#[0-9]+\)$ ]]; then + title="${BASH_REMATCH[1]}" + fi + title_re="^feat: release v?([0-9]+\.[0-9]+\.[0-9]+(-[0-9A-Za-z.-]+)?)$" + if [[ $title =~ $title_re ]]; then + version="${BASH_REMATCH[1]}" + else + echo "commit format is not correct (expected: feat: release vX.Y.Z[-prerelease])" + exit 1 + fi + fi + + echo "version=v${version}" >> $GITHUB_OUTPUT + echo "version_without_v=${version}" >> $GITHUB_OUTPUT + if [[ $version == *-* ]]; then + echo "is_prerelease=true" >> $GITHUB_OUTPUT + else + echo "is_prerelease=false" >> $GITHUB_OUTPUT fi - name: Verify rockspec exists