Skip to content

Commit ea2837b

Browse files
author
DanielePalaia
committed
modify action/adding Dockerfile and Makefile
1 parent b73ee5d commit ea2837b

File tree

7 files changed

+69
-20
lines changed

7 files changed

+69
-20
lines changed

.ci/conf/rabbitmq.conf

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,3 @@ ssl_options.certfile = /etc/rabbitmq/certs/server_certificate.pem
55
ssl_options.keyfile = /etc/rabbitmq/certs/server_key.pem
66
listeners.ssl.default = 5671
77
stream.listeners.ssl.default = 5551
8-
ssl_options.verify = verify_peer
9-
ssl_options.fail_if_no_peer_cert = false

.github/workflows/build-test.yaml

Lines changed: 36 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -17,25 +17,52 @@ jobs:
1717
python-version: [3.9]
1818
os: [ubuntu-22.04]
1919
runs-on: ${{ matrix.os }}
20-
services:
21-
rabbitmq-server:
22-
image: rabbitmq:4.0.3-management
23-
ports:
24-
- 5672:5672
25-
- 15672:15672
20+
2621
steps:
27-
- uses: actions/checkout@v2
22+
- name: Checkout
23+
uses: actions/checkout@v4
2824
- uses: actions/setup-python@v2
2925
with:
3026
python-version: ${{ matrix.python-version }}
27+
- name: Set up Docker Buildx
28+
uses: docker/setup-buildx-action@v3
29+
- name: Build and export
30+
uses: docker/build-push-action@v6
31+
with:
32+
context: .
33+
tags: rabbitmq_tls:latest
34+
outputs: type=docker,dest=/tmp/rabbitmq_tls.tar
35+
- name: Upload artifact
36+
uses: actions/upload-artifact@v4
37+
with:
38+
name: rabbitmq_tls
39+
path: /tmp/rabbitmq_tls.tar
40+
- name: Download artifact
41+
uses: actions/download-artifact@v4
42+
with:
43+
name: rabbitmq_tls
44+
path: /tmp
45+
- name: Load image
46+
run: |
47+
docker load --input /tmp/rabbitmq_tls.tar
48+
docker image ls -a
49+
docker run -d --rm --name rabbitmq-stream-client-test \
50+
-p 5552:5552 -p 5672:5672 -p 5671:5671 -p 5551:5551 -p 15672:15672 \
51+
-e RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-rabbitmq_stream advertised_host localhost" \
52+
rabbitmq_tls
53+
- name: wait for running
54+
run: |
55+
docker exec rabbitmq-stream-client-test /bin/bash -c 'ps -aux'
56+
docker exec rabbitmq-stream-client-test /bin/bash -c 'sleep 10'
57+
docker exec rabbitmq-stream-client-test /bin/bash -c 'rabbitmqctl status'
58+
docker exec rabbitmq-stream-client-test /bin/bash -c 'rabbitmqctl wait --pid 1 --timeout 70'
3159
- name: Install and configure Poetry
3260
uses: snok/install-poetry@v1
3361
with:
3462
version: 1.4.2
3563
virtualenvs-create: true
3664
virtualenvs-in-project: false
37-
- name: Enable RabbitMQ Plugins
38-
run: docker exec ${{ job.services.rabbitmq-server.id }} rabbitmq-plugins enable rabbitmq_stream rabbitmq_stream_management rabbitmq_amqp1_0
65+
3966
- name: poetry install
4067
run: poetry install --no-root
4168
- name: isort check-only

Dockerfile

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
FROM rabbitmq:4-management
2+
#FROM pivotalrabbitmq/rabbitmq:sha-ae9fbb7bd5982aff099293adbb1edcd616ef806f
3+
4+
5+
COPY .ci/conf/rabbitmq.conf /etc/rabbitmq/rabbitmq.conf
6+
COPY .ci/conf/enabled_plugins /etc/rabbitmq/enabled_plugins
7+
8+
COPY .ci/certs /etc/rabbitmq/certs

Makefile

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
2+
all: test build
3+
4+
rabbitmq-server:
5+
docker build -t rabbitmq-tls-test .
6+
docker run -it --rm --name rabbitmq-tls-test \
7+
-p 5672:5672 -p 5671:5671 -p 15672:15672 \
8+
-e RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-rabbitmq_stream advertised_host localhost" \
9+
rabbitmq-tls-test
10+
11+
help:
12+
cat Makefile

examples/getting_started/main.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,9 @@ def on_link_closed(self, event: Event) -> None:
6161
def create_connection() -> Connection:
6262
connection = Connection("amqps://guest:guest@localhost:5672/")
6363
# in case of SSL
64-
# connection = Connection("amqps://guest:guest@localhost:5671/", ssl_context=SSlConfigurationContext(ca_cert="/Users/dpalaia/projects/rabbitmq-stream-go-client/compose/tls/tls-gen/basic/result/ca_certificate.pem"))
64+
# ca_cert = "/Users/dpalaia/projects/rabbitmq-stream-go-client/compose/tls/tls-gen/basic/result/ca_certificate.pem"
65+
# connection = Connection("amqps://guest:guest@localhost:5671/",
66+
# ssl_context=SSlConfigurationContext(ca_cert=ca_cert))
6567
connection.dial()
6668

6769
return connection

rabbitmq_amqp_python_client/connection.py

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,18 @@ def dial(self) -> None:
2828
logger.debug("Establishing a connection to the amqp server")
2929
if self._conf_ssl_context is not None:
3030
logger.debug("Enabling SSL")
31-
self._ssl_domain = SSLDomain(SSLDomain.MODE_CLIENT)
32-
self._ssl_domain.set_trusted_ca_db(self._conf_ssl_context.ca_cert)
31+
if self._ssl_domain is not None:
32+
self._ssl_domain = SSLDomain(SSLDomain.MODE_CLIENT)
33+
self._ssl_domain.set_trusted_ca_db(self._conf_ssl_context.ca_cert)
3334
# for mutual authentication
3435
if self._conf_ssl_context.client_cert is not None:
3536
logger.debug("Enabling mutual authentication as well")
36-
self._ssl_domain.set_credentials(
37-
self._conf_ssl_context.client_cert.client_cert,
38-
self._conf_ssl_context.client_cert.client_key,
39-
self._conf_ssl_context.client_cert.password,
40-
)
37+
if self._ssl_domain is not None:
38+
self._ssl_domain.set_credentials(
39+
self._conf_ssl_context.client_cert.client_cert,
40+
self._conf_ssl_context.client_cert.client_key,
41+
self._conf_ssl_context.client_cert.password,
42+
)
4143
self._conn = BlockingConnection(self._addr, ssl_domain=self._ssl_domain)
4244
self._open()
4345
logger.debug("Connection to the server established")

tests/conftest.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ def connection(pytestconfig):
2525
def connection_ssl(pytestconfig):
2626
connection = Connection(
2727
"amqps://guest:guest@localhost:5671/",
28-
ssl_context=SSlConfigurationContext(ca_cert="./.ci/certs/ca_certificate.pem"),
28+
ssl_context=SSlConfigurationContext(ca_cert=".ci/certs/ca_certificate.pem"),
2929
)
3030
connection.dial()
3131
try:

0 commit comments

Comments
 (0)