1515 release :
1616 runs-on : ubuntu-latest
1717 if : github.event_name == 'push' && github.ref == 'refs/heads/main'
18+ outputs :
19+ SKIP_RELEASE : ${{ env.SKIP_RELEASE }}
1820 steps :
1921 - uses : actions/checkout@v2
2022 with :
@@ -32,51 +34,31 @@ jobs:
3234 LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "v0.0.0")
3335 echo "LATEST_TAG=$LATEST_TAG" >> $GITHUB_ENV
3436
35- - name : Bump version
36- id : bump_version
37- run : |
38- CURRENT_VERSION=${LATEST_TAG#v}
39- IFS='.' read -r -a VERSION_PARTS <<< "$CURRENT_VERSION"
40- PATCH=$((VERSION_PARTS[2] + 1))
41- NEW_VERSION="${VERSION_PARTS[0]}.${VERSION_PARTS[1]}.$PATCH"
42- echo "NEW_VERSION=$NEW_VERSION" >> $GITHUB_ENV
43-
44- - name : Update package.json
45- run : |
37+ # 从package.json中获取当前版本
4638 if [ -f "package.json" ]; then
47- # 尝试使用npm version命令
48- if ! npm version $NEW_VERSION --no-git-tag-version; then
49- # 如果npm version失败,则使用sed直接修改文件
50- sed -i 's/"version": ".*"/"version": "'$NEW_VERSION'"/' package.json
51- fi
39+ CURRENT_VERSION=$(node -p "require('./package.json').version" 2>/dev/null || echo "0.0.0")
40+ echo "CURRENT_VERSION=$CURRENT_VERSION" >> $GITHUB_ENV
5241 else
53- # 如果package.json不存在,创建一个基础版本
54- echo '{
55- "name": "mininote-md",
56- "version": "'$NEW_VERSION'",
57- "private": true
58- }' > package.json
42+ echo "CURRENT_VERSION=0.0.0" >> $GITHUB_ENV
5943 fi
60-
61- - name : Commit and tag
62- run : |
63- git add package.json
64- git commit -m "Release v$NEW_VERSION"
65- git tag -a "v$NEW_VERSION" -m "Release v$NEW_VERSION"
66-
67- - name : Push changes
68- env :
69- GITHUB_TOKEN : ${{ secrets.PAT }}
44+
45+ - name : Check version
46+ id : check_version
7047 run : |
71- git remote set-url origin https://x-access-token:${GITHUB_TOKEN}@github.com/${{ github.repository }}
72- git push origin HEAD:main
73- git push --tags
74-
48+ LATEST_VERSION=${LATEST_TAG#v}
49+ if [ "$LATEST_VERSION" = "$CURRENT_VERSION" ]; then
50+ echo "SKIP_RELEASE=true" >> $GITHUB_ENV
51+ echo "Versions are identical ($LATEST_VERSION), skipping release process"
52+ else
53+ echo "SKIP_RELEASE=false" >> $GITHUB_ENV
54+ fi
55+
7556 - name : Create Release
57+ if : env.SKIP_RELEASE != 'true'
7658 uses : softprops/action-gh-release@v1
7759 with :
78- tag_name : v${{ env.NEW_VERSION }}
79- name : Release v${{ env.NEW_VERSION }}
60+ tag_name : v${{ env.CURRENT_VERSION }}
61+ name : Release v${{ env.CURRENT_VERSION }}
8062 draft : false
8163 prerelease : false
8264 env :
@@ -103,7 +85,10 @@ jobs:
10385 publish :
10486 runs-on : ubuntu-latest
10587 needs : release
106- if : github.event_name == 'push' && github.ref == 'refs/heads/main'
88+ if : |
89+ github.event_name == 'push' &&
90+ github.ref == 'refs/heads/main' &&
91+ needs.release.outputs.SKIP_RELEASE != 'true'
10792 steps :
10893 - name : Checkout code
10994 uses : actions/checkout@v4
0 commit comments