Skip to content

Commit 90ed6a8

Browse files
author
amuraru
committed
docker kafka
1 parent 829e8c0 commit 90ed6a8

File tree

1 file changed

+43
-72
lines changed

1 file changed

+43
-72
lines changed

.github/workflows/e2e-tests.yaml

Lines changed: 43 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -21,81 +21,53 @@ jobs:
2121
with:
2222
go-version-file: 'go.mod'
2323

24-
- name: Create Kafka KRaft configuration
25-
run: |
26-
mkdir -p kafka-config
27-
cat > kafka-config/server.properties << 'EOF'
28-
# KRaft mode configuration
29-
process.roles=broker,controller
30-
node.id=1
31-
controller.quorum.voters=1@localhost:9093
32-
33-
# Listeners
34-
listeners=PLAINTEXT://0.0.0.0:9092,CONTROLLER://0.0.0.0:9093
35-
advertised.listeners=PLAINTEXT://localhost:9092
36-
listener.security.protocol.map=PLAINTEXT:PLAINTEXT,CONTROLLER:PLAINTEXT
37-
controller.listener.names=CONTROLLER
38-
inter.broker.listener.name=PLAINTEXT
39-
40-
# Log directories
41-
log.dirs=/tmp/kraft-combined-logs
42-
43-
# Cluster ID will be generated
44-
# cluster.id will be set dynamically
45-
46-
# Topic defaults
47-
offsets.topic.replication.factor=1
48-
transaction.state.log.replication.factor=1
49-
transaction.state.log.min.isr=1
50-
default.replication.factor=1
51-
min.insync.replicas=1
52-
53-
# Performance tuning for CI
54-
num.network.threads=3
55-
num.io.threads=8
56-
socket.send.buffer.bytes=102400
57-
socket.receive.buffer.bytes=102400
58-
socket.request.max.bytes=104857600
59-
EOF
60-
6124
- name: Start Kafka 4.0 with KRaft
6225
run: |
63-
# Download and extract Kafka 4.0
64-
wget -q https://archive.apache.org/dist/kafka/4.0.0/kafka_2.13-4.0.0.tgz
65-
tar -xzf kafka_2.13-4.0.0.tgz
66-
67-
# Generate cluster ID
68-
CLUSTER_ID=$(kafka_2.13-4.0.0/bin/kafka-storage.sh random-uuid)
69-
echo "Generated Cluster ID: $CLUSTER_ID"
70-
71-
# Format storage
72-
kafka_2.13-4.0.0/bin/kafka-storage.sh format \
73-
-t $CLUSTER_ID \
74-
-c kafka-config/server.properties
75-
76-
# Start Kafka in background
77-
kafka_2.13-4.0.0/bin/kafka-server-start.sh kafka-config/server.properties > kafka.log 2>&1 &
78-
KAFKA_PID=$!
79-
echo "KAFKA_PID=$KAFKA_PID" >> $GITHUB_ENV
80-
26+
docker run -d \
27+
--name broker \
28+
--network host \
29+
-e KAFKA_NODE_ID=1 \
30+
-e KAFKA_PROCESS_ROLES=broker,controller \
31+
-e KAFKA_LISTENERS=PLAINTEXT://localhost:9092,CONTROLLER://localhost:9093 \
32+
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 \
33+
-e KAFKA_CONTROLLER_LISTENER_NAMES=CONTROLLER \
34+
-e KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT \
35+
-e KAFKA_CONTROLLER_QUORUM_VOTERS=1@localhost:9093 \
36+
-e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 \
37+
-e KAFKA_TRANSACTION_STATE_LOG_REPLICATION_FACTOR=1 \
38+
-e KAFKA_TRANSACTION_STATE_LOG_MIN_ISR=1 \
39+
-e KAFKA_GROUP_INITIAL_REBALANCE_DELAY_MS=0 \
40+
-e KAFKA_NUM_PARTITIONS=3 \
41+
apache/kafka:4.0.0
42+
8143
# Wait for Kafka to be ready
8244
echo "Waiting for Kafka to start..."
83-
for i in {1..30}; do
84-
if kafka_2.13-4.0.0/bin/kafka-broker-api-versions.sh --bootstrap-server localhost:9092 > /dev/null 2>&1; then
85-
echo "Kafka is ready!"
86-
break
45+
for i in {1..60}; do
46+
# Check if Kafka is listening on port 9092
47+
if nc -z localhost 9092 2>/dev/null; then
48+
echo "Kafka port 9092 is open!"
49+
# Give it a couple more seconds to fully initialize
50+
sleep 3
51+
# Try to get broker API versions
52+
if docker exec broker /opt/kafka/bin/kafka-broker-api-versions.sh --bootstrap-server localhost:9092 > /dev/null 2>&1; then
53+
echo "Kafka is ready and responding to requests!"
54+
break
55+
fi
8756
fi
88-
if [ $i -eq 30 ]; then
89-
echo "Kafka failed to start within 30 seconds"
90-
cat kafka.log
57+
if [ $i -eq 60 ]; then
58+
echo "Kafka failed to start within 60 seconds"
59+
echo "=== Kafka logs ==="
60+
docker logs broker
9161
exit 1
9262
fi
93-
echo "Attempt $i/30: Kafka not ready yet, waiting..."
63+
echo "Attempt $i/60: Kafka not ready yet, waiting..."
9464
sleep 1
9565
done
96-
66+
9767
# Verify Kafka is running
98-
kafka_2.13-4.0.0/bin/kafka-broker-api-versions.sh --bootstrap-server localhost:9092
68+
echo "Verifying Kafka cluster..."
69+
docker exec broker /opt/kafka/bin/kafka-broker-api-versions.sh --bootstrap-server localhost:9092
70+
echo "Kafka cluster is up and running!"
9971
10072
- name: Create KMinion configuration
10173
run: |
@@ -225,7 +197,7 @@ jobs:
225197
if: failure()
226198
run: |
227199
echo "=== Kafka logs ==="
228-
cat kafka.log || echo "No Kafka logs found"
200+
docker logs broker || echo "No Kafka logs found"
229201
echo ""
230202
echo "=== KMinion logs ==="
231203
cat kminion.log || echo "No KMinion logs found"
@@ -237,12 +209,11 @@ jobs:
237209
if [ ! -z "$KMINION_PID" ]; then
238210
kill $KMINION_PID || true
239211
fi
240-
241-
# Stop Kafka
242-
if [ ! -z "$KAFKA_PID" ]; then
243-
kill $KAFKA_PID || true
244-
fi
245-
212+
213+
# Stop and remove Kafka container
214+
docker stop broker || true
215+
docker rm broker || true
216+
246217
# Wait a bit for graceful shutdown
247218
sleep 2
248219

0 commit comments

Comments
 (0)