Skip to content

Commit 9076ad1

Browse files
authored
refactor: simplify version management in GitHub Actions (#15)
1 parent 851a118 commit 9076ad1

File tree

1 file changed

+24
-39
lines changed

1 file changed

+24
-39
lines changed

.github/workflows/docker-publish.yml

Lines changed: 24 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ jobs:
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

Comments
 (0)