@@ -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