1- name : Deploy a branch
1+ name : Release New Version
22
33on :
44 workflow_dispatch :
88 default : false
99 type : boolean
1010
11+ skip-tests :
12+ description : " Skip unit and integration tests"
13+ default : false
14+ type : boolean
15+
1116 version :
1217 description : " Override deployment version"
1318 default : " "
1419 type : string
1520
1621jobs :
17- maven-central :
18- name : Deploy to Maven Central
22+ release :
23+ name : Release
1924 environment :
2025 name : maven-central
2126 url : https://repo1.maven.org/maven2/io/github/ascopes/jct/java-compiler-testing/
@@ -35,26 +40,21 @@ jobs:
3540 uses : actions/setup-java@v4
3641 with :
3742 distribution : zulu
38- # Must use >= JDK 17 for Javadocs to generate correctly
39- java-version : 23
40- server-id : ossrh
41- server-username : OSSRH_USERNAME
42- server-password : OSSRH_TOKEN
43+ java-version : 24
44+ server-id : central
45+ server-username : CENTRAL_USERNAME
46+ server-password : CENTRAL_TOKEN
4347 gpg-passphrase : GPG_PASSPHRASE
4448 gpg-private-key : ${{ secrets.GPG_PRIVATE_KEY }}
4549
46- - name : Deploy to staging
47- shell : bash
50+ - name : Configure Git
4851 run : |-
4952 git config user.name '${{ github.actor }}'
5053 git config user.email '${{ github.actor }}@users.noreply.github.com'
5154
52- group_id="$(./mvnw help:evaluate -q -DforceStdout -Dexpression="project.groupId")"
53- echo "group_id=${group_id}" >> "${GITHUB_ENV}"
54-
55- artifact_id="$(./mvnw help:evaluate -q -DforceStdout -Dexpression="project.artifactId")"
56- echo "artifact_id=${artifact_id}" >> "${GITHUB_ENV}"
57-
55+ - name : Create Maven Central Release
56+ shell : bash
57+ run : |-
5858 if [[ '${{ inputs.version }}' == "" ]]; then
5959 release_version="$(./mvnw -B help:evaluate -Dexpression=project.version -q -DforceStdout | sed 's/-SNAPSHOT//g')"
6060 else
@@ -65,50 +65,26 @@ jobs:
6565 ./mvnw -B -e \
6666 -Preleases \
6767 -DdryRun='${{ inputs.dry-run }}' \
68+ -Dinvoker.skip='${{ inputs.skip-tests }}' \
6869 -Dpassword='${{ secrets.GITHUB_TOKEN }}' \
6970 -DreleaseVersion="${release_version}" \
7071 -DsignTag=false \
72+ -DskipTests='${{ inputs.skip-tests }}' \
7173 -Dtag="v${release_version}" \
7274 clean verify release:prepare release:perform
73-
74- echo "Created staging release for ${group_id}/${artifact_id}/${release_version}"
7575 env :
76- OSSRH_USERNAME : ${{ secrets.OSSRH_USERNAME }}
77- OSSRH_TOKEN : ${{ secrets.OSSRH_TOKEN }}
76+ CENTRAL_USERNAME : ${{ secrets.CENTRAL_USERNAME }}
77+ CENTRAL_TOKEN : ${{ secrets.CENTRAL_TOKEN }}
7878 GPG_PASSPHRASE : ${{ secrets.GPG_PASSPHRASE }}
7979
80- - name : Promote Maven Central Staging Release
81- if : ${{ ! inputs.dry-run }}
82- shell : bash
83- run : |-
84- echo "Will now promote ${group_id}/${artifact_id}/${release_version} to Maven Central"
85-
86- ./scripts/close-nexus-repository.sh \
87- -u "${OSSRH_USERNAME}" \
88- -p "${OSSRH_TOKEN}" \
89- -g "${group_id}" \
90- -a "${artifact_id}" \
91- -v "${release_version}" \
92- -s "https://s01.oss.sonatype.org/"
93-
94- echo "Promoted staging ${group_id}/${artifact_id}/${release_version} to Maven Central successfully"
95- env :
96- OSSRH_USERNAME : ${{ secrets.OSSRH_USERNAME }}
97- OSSRH_TOKEN : ${{ secrets.OSSRH_TOKEN }}
98- GPG_PASSPHRASE : ${{ secrets.GPG_PASSPHRASE }}
99-
100- - name : Abort and rollback staging release
80+ - name : Revert Maven Central Release
10181 if : ${{ failure() }}
10282 run : |-
10383 ./mvnw -B -e \
10484 -Dpassword='${{ secrets.GITHUB_TOKEN }}' \
10585 -DreleaseVersion="${release_version}" \
10686 -Dtag="v${release_version}" \
10787 release:rollback
108- env :
109- OSSRH_USERNAME : ${{ secrets.OSSRH_USERNAME }}
110- OSSRH_TOKEN : ${{ secrets.OSSRH_TOKEN }}
111- GPG_PASSPHRASE : ${{ secrets.GPG_PASSPHRASE }}
11288
11389 - name : Create GitHub Release
11490 if : ${{ ! inputs.dry-run }}
0 commit comments