Skip to content

Commit 8e92798

Browse files
committed
Set up CI
1 parent abb8277 commit 8e92798

File tree

5 files changed

+190
-5
lines changed

5 files changed

+190
-5
lines changed

.github/workflows/test.yml

+66
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
name: Test against RabbitMQ 3.12 stable
2+
3+
on:
4+
pull_request:
5+
branches:
6+
- 5.16.x-stable
7+
push:
8+
branches:
9+
- 5.16.x-stable
10+
workflow_dispatch:
11+
12+
jobs:
13+
build:
14+
runs-on: ubuntu-22.04
15+
16+
steps:
17+
- uses: actions/checkout@v3
18+
- name: Checkout tls-gen
19+
uses: actions/checkout@v3
20+
with:
21+
repository: rabbitmq/tls-gen
22+
path: './tls-gen'
23+
- name: Set up Python
24+
uses: actions/setup-python@v4
25+
with:
26+
python-version: '3.x'
27+
- name: Set up JDK
28+
uses: actions/setup-java@v3
29+
with:
30+
distribution: 'temurin'
31+
java-version: '17'
32+
cache: 'maven'
33+
server-id: ossrh
34+
server-username: MAVEN_USERNAME
35+
server-password: MAVEN_PASSWORD
36+
gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }}
37+
gpg-passphrase: MAVEN_GPG_PASSPHRASE
38+
- name: Start cluster
39+
run: ci/start-cluster.sh
40+
- name: Get dependencies
41+
run: make deps
42+
- name: Test with NIO
43+
run: |
44+
./mvnw verify -P '!setup-test-cluster,use-nio' -Drabbitmqctl.bin=DOCKER:rabbitmq \
45+
-Dtest-broker.A.nodename=rabbit@$(hostname) -Dtest-broker.B.nodename=hare@$(hostname) \
46+
-Dmaven.javadoc.skip=true \
47+
-Dtest-client-cert.password= -Dtest-tls-certs.dir=rabbitmq-configuration/tls \
48+
--no-transfer-progress
49+
- name: Test with blocking IO
50+
run: |
51+
./mvnw verify -P '!setup-test-cluster' -Drabbitmqctl.bin=DOCKER:rabbitmq \
52+
-Dtest-broker.A.nodename=rabbit@$(hostname) -Dtest-broker.B.nodename=hare@$(hostname) \
53+
-Dmaven.javadoc.skip=true \
54+
-Dtest-client-cert.password= -Dtest-tls-certs.dir=rabbitmq-configuration/tls \
55+
--no-transfer-progress
56+
- name: Stop broker A
57+
run: docker stop rabbitmq && docker rm rabbitmq
58+
- name: Stop broker B
59+
run: docker stop hare && docker rm hare
60+
- name: Publish snapshot
61+
if: ${{ github.event_name != 'pull_request' }}
62+
run: ./mvnw clean deploy -Psnapshots -DskipITs -DskipTests --no-transfer-progress
63+
env:
64+
MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
65+
MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}
66+
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}

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

ci/start-broker.sh

+4-5
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@
22

33
LOCAL_SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
44

5-
RABBITMQ_IMAGE_TAG=${RABBITMQ_IMAGE_TAG:-3.11}
6-
RABBITMQ_IMAGE=${RABBITMQ_IMAGE:-rabbitmq}
5+
RABBITMQ_IMAGE=${RABBITMQ_IMAGE:-rabbitmq:3.12}
76

87
wait_for_message() {
98
while ! docker logs "$1" | grep -q "$2";
@@ -27,15 +26,15 @@ chmod -R o+r rabbitmq-configuration/tls/*
2726
./mvnw -q clean resources:testResources -Dtest-tls-certs.dir=/etc/rabbitmq/tls
2827
cp target/test-classes/[email protected] rabbitmq-configuration/rabbitmq.config
2928

30-
echo "Running RabbitMQ ${RABBITMQ_IMAGE}:${RABBITMQ_IMAGE_TAG}"
29+
echo "Running RabbitMQ ${RABBITMQ_IMAGE}"
3130

3231
docker rm -f rabbitmq 2>/dev/null || echo "rabbitmq was not running"
3332
docker run -d --name rabbitmq \
3433
--network host \
3534
-v "${PWD}"/rabbitmq-configuration:/etc/rabbitmq \
36-
"${RABBITMQ_IMAGE}":"${RABBITMQ_IMAGE_TAG}"
35+
"${RABBITMQ_IMAGE}"
3736

3837
wait_for_message rabbitmq "completed with"
3938

4039
docker exec rabbitmq rabbitmq-diagnostics erlang_version
41-
docker exec rabbitmq rabbitmqctl version
40+
docker exec rabbitmq rabbitmqctl version

ci/start-cluster.sh

+79
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
#!/usr/bin/env bash
2+
3+
LOCAL_SCRIPT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
4+
5+
RABBITMQ_IMAGE=${RABBITMQ_IMAGE:-rabbitmq:3.12}
6+
7+
wait_for_message() {
8+
while ! docker logs "$1" | grep -q "$2";
9+
do
10+
sleep 5
11+
echo "Waiting 5 seconds for $1 to start..."
12+
done
13+
}
14+
15+
make -C "${PWD}"/tls-gen/basic
16+
17+
mv tls-gen/basic/result/server_$(hostname -s)_certificate.pem tls-gen/basic/result/server_certificate.pem
18+
mv tls-gen/basic/result/server_$(hostname -s)_key.pem tls-gen/basic/result/server_key.pem
19+
mv tls-gen/basic/server_$(hostname -s) tls-gen/basic/server
20+
mv tls-gen/basic/client_$(hostname -s) tls-gen/basic/client
21+
22+
mkdir -p rabbitmq-configuration/tls
23+
24+
cp -R "${PWD}"/tls-gen/basic/* rabbitmq-configuration/tls
25+
chmod -R o+r rabbitmq-configuration/tls/*
26+
./mvnw -q clean resources:testResources -Dtest-tls-certs.dir=/etc/rabbitmq/tls
27+
cp target/test-classes/[email protected] rabbitmq-configuration/[email protected]
28+
cp target/test-classes/[email protected] rabbitmq-configuration/[email protected]
29+
30+
echo "Running RabbitMQ ${RABBITMQ_IMAGE}"
31+
32+
docker rm -f rabbitmq 2>/dev/null || echo "rabbitmq was not running"
33+
docker run -d --name rabbitmq \
34+
--network host \
35+
-v "${PWD}"/rabbitmq-configuration:/etc/rabbitmq \
36+
--env RABBITMQ_CONFIG_FILE=/etc/rabbitmq/[email protected] \
37+
--env RABBITMQ_NODENAME=rabbit@$(hostname) \
38+
--env RABBITMQ_NODE_PORT=5672 \
39+
--env RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-setcookie do-not-do-this-in-production" \
40+
"${RABBITMQ_IMAGE}"
41+
42+
# for CLI commands to share the same cookie
43+
docker exec rabbitmq bash -c "echo 'do-not-do-this-in-production' > /var/lib/rabbitmq/.erlang.cookie"
44+
docker exec rabbitmq chmod 0600 /var/lib/rabbitmq/.erlang.cookie
45+
46+
wait_for_message rabbitmq "completed with"
47+
48+
docker run -d --name hare \
49+
--network host \
50+
-v "${PWD}"/rabbitmq-configuration:/etc/rabbitmq \
51+
--env RABBITMQ_CONFIG_FILE=/etc/rabbitmq/[email protected] \
52+
--env RABBITMQ_NODENAME=hare@$(hostname) \
53+
--env RABBITMQ_NODE_PORT=5673 \
54+
--env RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-setcookie do-not-do-this-in-production" \
55+
"${RABBITMQ_IMAGE}"
56+
57+
# for CLI commands to share the same cookie
58+
docker exec hare bash -c "echo 'do-not-do-this-in-production' > /var/lib/rabbitmq/.erlang.cookie"
59+
docker exec hare chmod 0600 /var/lib/rabbitmq/.erlang.cookie
60+
61+
wait_for_message hare "completed with"
62+
63+
docker exec hare rabbitmqctl --node hare@$(hostname) status
64+
65+
docker exec rabbitmq rabbitmq-diagnostics --node rabbit@$(hostname) is_running
66+
docker exec hare rabbitmq-diagnostics --node hare@$(hostname) is_running
67+
68+
docker exec hare rabbitmqctl --node hare@$(hostname) stop_app
69+
docker exec hare rabbitmqctl --node hare@$(hostname) join_cluster rabbit@$(hostname)
70+
docker exec hare rabbitmqctl --node hare@$(hostname) start_app
71+
72+
sleep 10
73+
74+
docker exec hare rabbitmqctl --node hare@$(hostname) await_startup
75+
76+
docker exec rabbitmq rabbitmq-diagnostics --node rabbit@$(hostname) erlang_version
77+
docker exec rabbitmq rabbitmqctl --node rabbit@$(hostname) version
78+
docker exec rabbitmq rabbitmqctl --node rabbit@$(hostname) status
79+
docker exec rabbitmq rabbitmqctl --node rabbit@$(hostname) cluster_status

0 commit comments

Comments
 (0)