Skip to content

Commit 5788a1f

Browse files
committed
Set up release GHA workflow
1 parent 1079868 commit 5788a1f

File tree

5 files changed

+169
-0
lines changed

5 files changed

+169
-0
lines changed

.github/workflows/release.yml

+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
name: Release AMQP Java Client
2+
3+
on:
4+
workflow_dispatch:
5+
6+
jobs:
7+
build:
8+
runs-on: ubuntu-24.04
9+
10+
steps:
11+
- uses: actions/checkout@v4
12+
- name: Evaluate release type
13+
run: ci/evaluate-release.sh
14+
- name: Set up JDK
15+
uses: actions/setup-java@v4
16+
with:
17+
distribution: 'temurin'
18+
java-version: '11'
19+
cache: 'maven'
20+
server-id: ${{ env.maven_server_id }}
21+
server-username: MAVEN_USERNAME
22+
server-password: MAVEN_PASSWORD
23+
gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }}
24+
gpg-passphrase: MAVEN_GPG_PASSPHRASE
25+
- name: Release AMQP Java Client
26+
run: |
27+
git config user.name "rabbitmq-ci"
28+
git config user.email "rabbitmq-ci@users.noreply.github.com"
29+
ci/release-stream-java-client.sh
30+
env:
31+
MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
32+
MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}
33+
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}
34+
- name: Checkout tls-gen
35+
uses: actions/checkout@v4
36+
with:
37+
repository: rabbitmq/tls-gen
38+
path: './tls-gen'
39+
- name: Start broker
40+
run: ci/start-broker.sh
41+
- name: Set up JDK for sanity check and documentation generation
42+
uses: actions/setup-java@v4
43+
with:
44+
distribution: 'temurin'
45+
java-version: '21'
46+
cache: 'maven'
47+
- name: Sanity Check
48+
run: |
49+
source ./release-versions.txt
50+
export RABBITMQ_LIBRARY_VERSION=$RELEASE_VERSION
51+
curl -Ls https://sh.jbang.dev | bash -s - src/test/java/SanityCheck.java
52+
- name: Stop broker
53+
run: docker stop rabbitmq && docker rm rabbitmq
54+
- name: Publish Documentation
55+
run: |
56+
git config user.name "rabbitmq-ci"
57+
git config user.email "rabbitmq-ci@users.noreply.github.com"
58+
ci/publish-documentation-to-github-pages.sh

.github/workflows/sanity-check.yml

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
name: Library Sanity Check
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
library_version:
7+
description: 'Library version (e.g. 0.1.0)'
8+
required: true
9+
type: string
10+
default: '0.1.0'
11+
12+
jobs:
13+
build:
14+
runs-on: ubuntu-24.04
15+
16+
steps:
17+
- uses: actions/checkout@v4
18+
- name: Checkout tls-gen
19+
uses: actions/checkout@v4
20+
with:
21+
repository: rabbitmq/tls-gen
22+
path: './tls-gen'
23+
- name: Set up JDK
24+
uses: actions/setup-java@v4
25+
with:
26+
distribution: 'zulu'
27+
java-version: '21'
28+
cache: 'maven'
29+
- name: Start broker
30+
run: ci/start-broker.sh
31+
- name: Sanity Check
32+
run: |
33+
curl -Ls https://sh.jbang.dev | bash -s - src/test/java/SanityCheck.java
34+
env:
35+
RABBITMQ_LIBRARY_VERSION: ${{ inputs.library_version }}
36+
- name: Stop broker
37+
run: docker stop rabbitmq && docker rm rabbitmq

ci/evaluate-release.sh

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#!/usr/bin/env bash
2+
3+
source ./release-versions.txt
4+
5+
if [[ $RELEASE_VERSION == *[RCM]* ]]
6+
then
7+
echo "prerelease=true" >> $GITHUB_ENV
8+
echo "ga_release=false" >> $GITHUB_ENV
9+
echo "maven_server_id=packagecloud-rabbitmq-maven-milestones" >> $GITHUB_ENV
10+
else
11+
echo "prerelease=false" >> $GITHUB_ENV
12+
echo "ga_release=true" >> $GITHUB_ENV
13+
echo "maven_server_id=ossrh" >> $GITHUB_ENV
14+
fi

ci/release-amqp-java-client.sh

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
#!/usr/bin/env bash
2+
3+
source ./release-versions.txt
4+
git checkout $RELEASE_BRANCH
5+
6+
./mvnw release:clean release:prepare -DdryRun=true -Darguments="-DskipTests" --no-transfer-progress \
7+
--batch-mode -Dtag="v$RELEASE_VERSION" \
8+
-DreleaseVersion=$RELEASE_VERSION \
9+
-DdevelopmentVersion=$DEVELOPMENT_VERSION \
10+
11+
./mvnw release:clean release:prepare -Darguments="-DskipTests" --no-transfer-progress \
12+
--batch-mode -Dtag="v$RELEASE_VERSION" \
13+
-DreleaseVersion=$RELEASE_VERSION \
14+
-DdevelopmentVersion=$DEVELOPMENT_VERSION
15+
16+
git checkout "v$RELEASE_VERSION"
17+
18+
if [[ $RELEASE_VERSION == *[RCM]* ]]
19+
then
20+
MAVEN_PROFILE="milestone"
21+
echo "prerelease=true" >> $GITHUB_ENV
22+
else
23+
MAVEN_PROFILE="release"
24+
echo "prerelease=false" >> $GITHUB_ENV
25+
fi
26+
27+
./mvnw clean deploy -P $MAVEN_PROFILE -DskipTests --no-transfer-progress

pom.xml

+33
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,7 @@
6161
<maven-javadoc-plugin.version>3.10.0</maven-javadoc-plugin.version>
6262
<maven.jar.plugin.version>3.4.2</maven.jar.plugin.version>
6363
<maven-clean-plugin.version>3.4.0</maven-clean-plugin.version>
64+
<nexus-staging-maven-plugin.version>1.7.0</nexus-staging-maven-plugin.version>
6465
<spotless.version>2.43.0</spotless.version>
6566
<google-java-format.version>1.23.0</google-java-format.version>
6667
<spotbugs-maven-plugin.version>4.8.6.3</spotbugs-maven-plugin.version>
@@ -643,6 +644,38 @@
643644
</distributionManagement>
644645
</profile>
645646

647+
<profile>
648+
<id>release</id>
649+
<properties>
650+
<maven.javadoc.skip>false</maven.javadoc.skip>
651+
<gpg.skip>false</gpg.skip>
652+
<spotbugs.skip>true</spotbugs.skip>
653+
</properties>
654+
<build>
655+
<plugins>
656+
657+
<plugin>
658+
<groupId>org.sonatype.plugins</groupId>
659+
<artifactId>nexus-staging-maven-plugin</artifactId>
660+
<version>${nexus-staging-maven-plugin.version}</version>
661+
<extensions>true</extensions>
662+
<configuration>
663+
<serverId>ossrh</serverId>
664+
<nexusUrl>https://oss.sonatype.org/</nexusUrl>
665+
<autoReleaseAfterClose>false</autoReleaseAfterClose>
666+
<stagingProgressTimeoutMinutes>20</stagingProgressTimeoutMinutes>
667+
</configuration>
668+
</plugin>
669+
</plugins>
670+
</build>
671+
<distributionManagement>
672+
<repository>
673+
<id>ossrh</id>
674+
<url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
675+
</repository>
676+
</distributionManagement>
677+
</profile>
678+
646679
</profiles>
647680

648681
</project>

0 commit comments

Comments
 (0)