Skip to content

Commit 4ab8927

Browse files
committed
refactor:修改version更新时提交的方法
1 parent 0e3ded3 commit 4ab8927

File tree

1 file changed

+38
-28
lines changed

1 file changed

+38
-28
lines changed

.github/workflows/semantic-version-update.yml

Lines changed: 38 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -86,74 +86,84 @@ jobs:
8686
echo "CHANGE_TYPE=${CHANGE_TYPE}" >> $GITHUB_ENV
8787
echo "New version will be: ${NEW_VERSION} (${CHANGE_TYPE} change)"
8888
89-
- name: Update version files
89+
- name: Update version files and add notes
9090
run: |
9191
# 更新version.properties文件
9292
echo "version=${NEW_VERSION}" > version.properties
9393
9494
# 更新Maven版本
9595
mvn versions:set -DnewVersion=${NEW_VERSION} -DgenerateBackupPoms=false
9696
97-
- name: Commit version changes
98-
run: |
9997
git config --global user.name 'GitHub Actions'
10098
git config --global user.email 'actions@github.com'
101-
git add version.properties pom.xml
102-
if [ -f "src/main/resources/application.properties" ]; then
103-
git add src/main/resources/application.properties
104-
fi
105-
git commit -m "chore: update version to ${NEW_VERSION} [skip ci]"
10699
107-
- name: Generate changelog entry
108-
run: |
109-
# 获取上一个标签以来的所有提交
100+
# 获取当前提交的SHA
101+
CURRENT_COMMIT=$(git rev-parse HEAD)
102+
103+
# 生成changelog内容
110104
PREVIOUS_TAG=$(git describe --tags --abbrev=0 --always 2>/dev/null || echo "")
111105
112106
if [ -n "${PREVIOUS_TAG}" ]; then
113-
echo "## [${NEW_VERSION}] - $(date +'%Y-%m-%d')" > changelog_entry.md
114-
echo "" >> changelog_entry.md
107+
CHANGELOG_CONTENT="## [${NEW_VERSION}] - $(date +'%Y-%m-%d')\n\n"
115108
116109
# 特性
117110
FEATURES=$(git log ${PREVIOUS_TAG}..HEAD --pretty=format:"- %s" --grep="^feat" --grep="^feature")
111+
if [ -n "${FEATURES}" ]; then
112+
CHANGELOG_CONTENT="${CHANGELOG_CONTENT}### 新功能\n${FEATURES}\n\n"
113+
fi
114+
115+
# 修复
116+
FIXES=$(git log ${PREVIOUS_TAG}..HEAD --pretty=format:"- %s" --grep="^fix" --grep="^bugfix" --grep="^hotfix")
117+
if [ -n "${FIXES}" ]; then
118+
CHANGELOG_CONTENT="${CHANGELOG_CONTENT}### 修复\n${FIXES}\n\n"
119+
fi
120+
121+
# 其他变更
122+
OTHERS=$(git log ${PREVIOUS_TAG}..HEAD --pretty=format:"- %s" --grep="^refactor" --grep="^perf" --grep="^style" --grep="^test" --grep="^docs" --grep="^build" --grep="^ci" --grep="^chore" --grep="^update")
123+
if [ -n "${OTHERS}" ]; then
124+
CHANGELOG_CONTENT="${CHANGELOG_CONTENT}### 其他变更\n${OTHERS}\n\n"
125+
fi
126+
127+
# 使用Git Notes记录版本信息和changelog
128+
git notes add -m "Version: ${NEW_VERSION}\n\nChangelog:\n${CHANGELOG_CONTENT}" $CURRENT_COMMIT
129+
130+
# 同时更新CHANGELOG.md文件以便于查看
131+
echo "## [${NEW_VERSION}] - $(date +'%Y-%m-%d')" > changelog_entry.md
132+
echo "" >> changelog_entry.md
133+
118134
if [ -n "${FEATURES}" ]; then
119135
echo "### 新功能" >> changelog_entry.md
120136
echo "${FEATURES}" >> changelog_entry.md
121137
echo "" >> changelog_entry.md
122138
fi
123139
124-
# 修复
125-
FIXES=$(git log ${PREVIOUS_TAG}..HEAD --pretty=format:"- %s" --grep="^fix" --grep="^bugfix" --grep="^hotfix")
126140
if [ -n "${FIXES}" ]; then
127141
echo "### 修复" >> changelog_entry.md
128142
echo "${FIXES}" >> changelog_entry.md
129143
echo "" >> changelog_entry.md
130144
fi
131145
132-
# 其他变更
133-
OTHERS=$(git log ${PREVIOUS_TAG}..HEAD --pretty=format:"- %s" --grep="^refactor" --grep="^perf" --grep="^style" --grep="^test" --grep="^docs" --grep="^build" --grep="^ci" --grep="^chore" --grep="^update")
134146
if [ -n "${OTHERS}" ]; then
135147
echo "### 其他变更" >> changelog_entry.md
136148
echo "${OTHERS}" >> changelog_entry.md
137149
echo "" >> changelog_entry.md
138150
fi
139151
140-
# 更新CHANGELOG.md
141152
if [ -f "CHANGELOG.md" ]; then
142-
# 将新条目插入到CHANGELOG.md的顶部(在标题之后)
143153
sed -i '1r changelog_entry.md' CHANGELOG.md
144154
else
145-
# 创建新的CHANGELOG.md
146155
echo "# 变更日志" > CHANGELOG.md
147156
echo "" >> CHANGELOG.md
148157
cat changelog_entry.md >> CHANGELOG.md
149158
fi
150-
151-
git add CHANGELOG.md
152-
git commit -m "docs: update changelog for v${NEW_VERSION} [skip ci]"
153159
fi
154160
155-
# 使用 GitHub CLI 直接推送更改
156-
- name: Push changes with GitHub CLI
157-
run: |
158-
# 直接使用 GitHub CLI 推送更改(只推送分支,不推送标签)
159-
git push
161+
# 提交版本文件和changelog更新
162+
git add version.properties pom.xml CHANGELOG.md
163+
if [ -f "src/main/resources/application.properties" ]; then
164+
git add src/main/resources/application.properties
165+
fi
166+
git commit --amend --no-edit
167+
# 推送notes和文件更改
168+
git push origin refs/notes/*
169+
git push --force

0 commit comments

Comments
 (0)