@@ -21,81 +21,44 @@ 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+ -p 9092:9092 \
29+ -e KAFKA_NODE_ID=1 \
30+ -e KAFKA_PROCESS_ROLES=broker,controller \
31+ -e KAFKA_LISTENERS=PLAINTEXT://:9092,CONTROLLER://: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
45+ for i in {1..60 }; do
46+ if docker exec broker kafka-broker-api-versions.sh --bootstrap-server localhost:9092 > /dev/null 2>&1; then
8547 echo "Kafka is ready!"
8648 break
8749 fi
88- if [ $i -eq 30 ]; then
89- echo "Kafka failed to start within 30 seconds"
90- cat kafka.log
50+ if [ $i -eq 60 ]; then
51+ echo "Kafka failed to start within 60 seconds"
52+ docker logs broker
9153 exit 1
9254 fi
93- echo "Attempt $i/30 : Kafka not ready yet, waiting..."
55+ echo "Attempt $i/60 : Kafka not ready yet, waiting..."
9456 sleep 1
9557 done
96-
58+
9759 # Verify Kafka is running
98- kafka_2.13-4.0.0/bin/kafka-broker-api-versions.sh --bootstrap-server localhost:9092
60+ docker exec broker kafka-broker-api-versions.sh --bootstrap-server localhost:9092
61+ echo "Kafka cluster is up and running!"
9962
10063 - name : Create KMinion configuration
10164 run : |
@@ -225,7 +188,7 @@ jobs:
225188 if : failure()
226189 run : |
227190 echo "=== Kafka logs ==="
228- cat kafka.log || echo "No Kafka logs found"
191+ docker logs broker || echo "No Kafka logs found"
229192 echo ""
230193 echo "=== KMinion logs ==="
231194 cat kminion.log || echo "No KMinion logs found"
@@ -237,12 +200,11 @@ jobs:
237200 if [ ! -z "$KMINION_PID" ]; then
238201 kill $KMINION_PID || true
239202 fi
240-
241- # Stop Kafka
242- if [ ! -z "$KAFKA_PID" ]; then
243- kill $KAFKA_PID || true
244- fi
245-
203+
204+ # Stop and remove Kafka container
205+ docker stop broker || true
206+ docker rm broker || true
207+
246208 # Wait a bit for graceful shutdown
247209 sleep 2
248210
0 commit comments