Skip to content

Commit

Permalink
Set up CI
Browse files Browse the repository at this point in the history
  • Loading branch information
acogoluegnes committed Jun 29, 2023
1 parent abb8277 commit 8e92798
Show file tree
Hide file tree
Showing 5 changed files with 190 additions and 5 deletions.
66 changes: 66 additions & 0 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
name: Test against RabbitMQ 3.12 stable

on:
pull_request:
branches:
- 5.16.x-stable
push:
branches:
- 5.16.x-stable
workflow_dispatch:

jobs:
build:
runs-on: ubuntu-22.04

steps:
- uses: actions/checkout@v3
- name: Checkout tls-gen
uses: actions/checkout@v3
with:
repository: rabbitmq/tls-gen
path: './tls-gen'
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.x'
- name: Set up JDK
uses: actions/setup-java@v3
with:
distribution: 'temurin'
java-version: '17'
cache: 'maven'
server-id: ossrh
server-username: MAVEN_USERNAME
server-password: MAVEN_PASSWORD
gpg-private-key: ${{ secrets.MAVEN_GPG_PRIVATE_KEY }}
gpg-passphrase: MAVEN_GPG_PASSPHRASE
- name: Start cluster
run: ci/start-cluster.sh
- name: Get dependencies
run: make deps
- name: Test with NIO
run: |
./mvnw verify -P '!setup-test-cluster,use-nio' -Drabbitmqctl.bin=DOCKER:rabbitmq \
-Dtest-broker.A.nodename=rabbit@$(hostname) -Dtest-broker.B.nodename=hare@$(hostname) \
-Dmaven.javadoc.skip=true \
-Dtest-client-cert.password= -Dtest-tls-certs.dir=rabbitmq-configuration/tls \
--no-transfer-progress
- name: Test with blocking IO
run: |
./mvnw verify -P '!setup-test-cluster' -Drabbitmqctl.bin=DOCKER:rabbitmq \
-Dtest-broker.A.nodename=rabbit@$(hostname) -Dtest-broker.B.nodename=hare@$(hostname) \
-Dmaven.javadoc.skip=true \
-Dtest-client-cert.password= -Dtest-tls-certs.dir=rabbitmq-configuration/tls \
--no-transfer-progress
- name: Stop broker A
run: docker stop rabbitmq && docker rm rabbitmq
- name: Stop broker B
run: docker stop hare && docker rm hare
- name: Publish snapshot
if: ${{ github.event_name != 'pull_request' }}
run: ./mvnw clean deploy -Psnapshots -DskipITs -DskipTests --no-transfer-progress
env:
MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
MAVEN_PASSWORD: ${{ secrets.OSSRH_TOKEN }}
MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }}
14 changes: 14 additions & 0 deletions ci/evaluate-release.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
#!/usr/bin/env bash

source ./release-versions.txt

if [[ $RELEASE_VERSION == *[RCM]* ]]
then
echo "prerelease=true" >> $GITHUB_ENV
echo "ga_release=false" >> $GITHUB_ENV
echo "maven_server_id=packagecloud-rabbitmq-maven-milestones" >> $GITHUB_ENV
else
echo "prerelease=false" >> $GITHUB_ENV
echo "ga_release=true" >> $GITHUB_ENV
echo "maven_server_id=ossrh" >> $GITHUB_ENV
fi
27 changes: 27 additions & 0 deletions ci/release-java-client.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#!/usr/bin/env bash

source ./release-versions.txt
git checkout $RELEASE_BRANCH

./mvnw release:clean release:prepare -DdryRun=true -Darguments="-DskipTests" --no-transfer-progress \
--batch-mode -Dtag="v$RELEASE_VERSION" \
-DreleaseVersion=$RELEASE_VERSION \
-DdevelopmentVersion=$DEVELOPMENT_VERSION \

./mvnw release:clean release:prepare -Darguments="-DskipTests" --no-transfer-progress \
--batch-mode -Dtag="v$RELEASE_VERSION" \
-DreleaseVersion=$RELEASE_VERSION \
-DdevelopmentVersion=$DEVELOPMENT_VERSION

git checkout "v$RELEASE_VERSION"

if [[ $RELEASE_VERSION == *[RCM]* ]]
then
MAVEN_PROFILE="milestone"
echo "prerelease=true" >> $GITHUB_ENV
else
MAVEN_PROFILE="release"
echo "prerelease=false" >> $GITHUB_ENV
fi

./mvnw clean deploy -P $MAVEN_PROFILE -DskipTests --no-transfer-progress
9 changes: 4 additions & 5 deletions ci/start-broker.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@

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

RABBITMQ_IMAGE_TAG=${RABBITMQ_IMAGE_TAG:-3.11}
RABBITMQ_IMAGE=${RABBITMQ_IMAGE:-rabbitmq}
RABBITMQ_IMAGE=${RABBITMQ_IMAGE:-rabbitmq:3.12}

wait_for_message() {
while ! docker logs "$1" | grep -q "$2";
Expand All @@ -27,15 +26,15 @@ chmod -R o+r rabbitmq-configuration/tls/*
./mvnw -q clean resources:testResources -Dtest-tls-certs.dir=/etc/rabbitmq/tls
cp target/test-classes/rabbit@localhost.config rabbitmq-configuration/rabbitmq.config

echo "Running RabbitMQ ${RABBITMQ_IMAGE}:${RABBITMQ_IMAGE_TAG}"
echo "Running RabbitMQ ${RABBITMQ_IMAGE}"

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

wait_for_message rabbitmq "completed with"

docker exec rabbitmq rabbitmq-diagnostics erlang_version
docker exec rabbitmq rabbitmqctl version
docker exec rabbitmq rabbitmqctl version
79 changes: 79 additions & 0 deletions ci/start-cluster.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
#!/usr/bin/env bash

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

RABBITMQ_IMAGE=${RABBITMQ_IMAGE:-rabbitmq:3.12}

wait_for_message() {
while ! docker logs "$1" | grep -q "$2";
do
sleep 5
echo "Waiting 5 seconds for $1 to start..."
done
}

make -C "${PWD}"/tls-gen/basic

mv tls-gen/basic/result/server_$(hostname -s)_certificate.pem tls-gen/basic/result/server_certificate.pem
mv tls-gen/basic/result/server_$(hostname -s)_key.pem tls-gen/basic/result/server_key.pem
mv tls-gen/basic/server_$(hostname -s) tls-gen/basic/server
mv tls-gen/basic/client_$(hostname -s) tls-gen/basic/client

mkdir -p rabbitmq-configuration/tls

cp -R "${PWD}"/tls-gen/basic/* rabbitmq-configuration/tls
chmod -R o+r rabbitmq-configuration/tls/*
./mvnw -q clean resources:testResources -Dtest-tls-certs.dir=/etc/rabbitmq/tls
cp target/test-classes/rabbit@localhost.config rabbitmq-configuration/rabbit@localhost.config
cp target/test-classes/hare@localhost.config rabbitmq-configuration/hare@localhost.config

echo "Running RabbitMQ ${RABBITMQ_IMAGE}"

docker rm -f rabbitmq 2>/dev/null || echo "rabbitmq was not running"
docker run -d --name rabbitmq \
--network host \
-v "${PWD}"/rabbitmq-configuration:/etc/rabbitmq \
--env RABBITMQ_CONFIG_FILE=/etc/rabbitmq/rabbit@localhost.config \
--env RABBITMQ_NODENAME=rabbit@$(hostname) \
--env RABBITMQ_NODE_PORT=5672 \
--env RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-setcookie do-not-do-this-in-production" \
"${RABBITMQ_IMAGE}"

# for CLI commands to share the same cookie
docker exec rabbitmq bash -c "echo 'do-not-do-this-in-production' > /var/lib/rabbitmq/.erlang.cookie"
docker exec rabbitmq chmod 0600 /var/lib/rabbitmq/.erlang.cookie

wait_for_message rabbitmq "completed with"

docker run -d --name hare \
--network host \
-v "${PWD}"/rabbitmq-configuration:/etc/rabbitmq \
--env RABBITMQ_CONFIG_FILE=/etc/rabbitmq/hare@localhost.config \
--env RABBITMQ_NODENAME=hare@$(hostname) \
--env RABBITMQ_NODE_PORT=5673 \
--env RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-setcookie do-not-do-this-in-production" \
"${RABBITMQ_IMAGE}"

# for CLI commands to share the same cookie
docker exec hare bash -c "echo 'do-not-do-this-in-production' > /var/lib/rabbitmq/.erlang.cookie"
docker exec hare chmod 0600 /var/lib/rabbitmq/.erlang.cookie

wait_for_message hare "completed with"

docker exec hare rabbitmqctl --node hare@$(hostname) status

docker exec rabbitmq rabbitmq-diagnostics --node rabbit@$(hostname) is_running
docker exec hare rabbitmq-diagnostics --node hare@$(hostname) is_running

docker exec hare rabbitmqctl --node hare@$(hostname) stop_app
docker exec hare rabbitmqctl --node hare@$(hostname) join_cluster rabbit@$(hostname)
docker exec hare rabbitmqctl --node hare@$(hostname) start_app

sleep 10

docker exec hare rabbitmqctl --node hare@$(hostname) await_startup

docker exec rabbitmq rabbitmq-diagnostics --node rabbit@$(hostname) erlang_version
docker exec rabbitmq rabbitmqctl --node rabbit@$(hostname) version
docker exec rabbitmq rabbitmqctl --node rabbit@$(hostname) status
docker exec rabbitmq rabbitmqctl --node rabbit@$(hostname) cluster_status

0 comments on commit 8e92798

Please sign in to comment.