@@ -2,14 +2,74 @@ name: Release to Maven Central
22
33on :
44 workflow_dispatch :
5+ push :
6+ branches :
7+ - master
8+ - develop
9+ - ' release/**'
10+ - ' hotfix/**'
511 release :
612 types : [published]
713
814permissions :
915 contents : read
1016
1117jobs :
18+ validate-version :
19+ runs-on : ubuntu-latest
20+
21+ steps :
22+ - name : Checkout
23+ uses : actions/checkout@v4
24+
25+ - name : Setup Java
26+ uses : actions/setup-java@v4
27+ with :
28+ distribution : temurin
29+ java-version : ' 11'
30+ cache : maven
31+
32+ - name : Validate Version for Branch Type
33+ run : |
34+ # 获取当前分支
35+ BRANCH_NAME="${GITHUB_REF#refs/heads/}"
36+ echo "Current branch: $BRANCH_NAME"
37+
38+ # 获取当前版本
39+ VERSION=$(mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive org.codehaus.mojo:exec-maven-plugin:3.5.0:exec)
40+ echo "Project version: $VERSION"
41+
42+ # 检查是否SNAPSHOT版本
43+ if echo "$VERSION" | grep -qi SNAPSHOT; then
44+ echo "ERROR: version is SNAPSHOT. Please set a non-SNAPSHOT version before releasing."
45+ exit 1
46+ fi
47+
48+ # 分支版本校验逻辑
49+ if [[ "$BRANCH_NAME" == "develop" ]] && ! [[ "$VERSION" == *"-alpha"* ]]; then
50+ echo "ERROR: develop分支的版本号必须包含 -alpha 后缀(例如:1.1.0-alpha.1)"
51+ exit 1
52+ fi
53+
54+ if [[ "$BRANCH_NAME" == release/* ]] && ! [[ "$VERSION" == *"-beta"* ]]; then
55+ echo "ERROR: release分支的版本号必须包含 -beta 后缀(例如:1.1.0-beta.1)"
56+ exit 1
57+ fi
58+
59+ if [[ "$BRANCH_NAME" == "master" ]] && [[ "$VERSION" == *"-"* ]]; then
60+ echo "ERROR: master分支的版本号必须是正式版本,不能包含 -alpha 或 -beta 后缀"
61+ exit 1
62+ fi
63+
64+ if [[ "$BRANCH_NAME" == hotfix/* ]] && [[ "$VERSION" == *"-"* ]]; then
65+ echo "ERROR: hotfix分支的版本号必须是正式版本,不能包含 -alpha 或 -beta 后缀"
66+ exit 1
67+ fi
68+
69+ echo "Version validation passed for branch: $BRANCH_NAME"
70+
1271 publish :
72+ needs : validate-version
1373 runs-on : ubuntu-latest
1474
1575 steps :
68128 env :
69129 GPG_PASSPHRASE : ${{ secrets.GPG_PASSPHRASE }}
70130 OSSRH_TOKEN_USERNAME : ${{ secrets.OSSRH_TOKEN_USERNAME }}
71- OSSRH_TOKEN_PASSWORD : ${{ secrets.OSSRH_TOKEN_PASSWORD }}
131+ OSSRH_TOKEN_PASSWORD : ${{ secrets.OSSRH_TOKEN_PASSWORD }}
0 commit comments