Skip to content

Commit 8c237dc

Browse files
committed
ci: skip kafka module tests; switch multi-server broker to dev-container mode
CI rounds 1-2 showed two different redpanda startup failures: - In the ci.yml / ci-sanitizers.yml `services:` stanzas, seastar exits EINVAL on the self-hosted runners because GitHub Actions services give us no way to override the default command line. There's no good workaround via `options:` so drop the redpanda service container, remove the kafka_test_server passthrough, and let the kafka module tests skip cleanly (the existing kafka_require_test_server gate already handles the empty-server case). The multi-server kafka-produce test still exercises the full produce path end-to-end. - The multi-server docker-compose had a hand-rolled list of redpanda start flags (`--overprovisioned --smp=1 ... --unsafe-bypass-fsync`) which still failed to boot on the shared runner. Replace it with Redpanda's official single-node preset `--mode dev-container`, which sets the right seastar probing and IO defaults for a containerised CI environment, and keep only the overrides we actually need on top (smp/memory/node-id and the advertised listener address).
1 parent 2563cd9 commit 8c237dc

4 files changed

Lines changed: 28 additions & 37 deletions

File tree

.github/actions/ci-tests/action.yml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,17 @@ inputs:
5757
description: SMTP server SMTP port
5858
default: 2525
5959

60+
#
61+
# Kafka is opt-in. Redpanda (our Kafka-compatible test broker) can't
62+
# start with the default command on GitHub Actions `services:` runners
63+
# - the seastar runtime fails EINVAL without extra flags we can't pass
64+
# through the services stanza. Leaving this empty makes
65+
# test.modules.kafka skip cleanly; the multi-server kafka test covers
66+
# the full produce path via docker-compose.
67+
#
6068
kafka_test_server:
61-
description: Kafka/Redpanda broker host
62-
default: 127.0.0.1
69+
description: Kafka/Redpanda broker host (empty = skip kafka module tests)
70+
default: ""
6371
kafka_test_server_port:
6472
description: Kafka/Redpanda broker port
6573
default: 9092

.github/workflows/ci-sanitizers.yml

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -129,18 +129,11 @@ jobs:
129129
--health-retries 5
130130
131131
#
132-
# Pulled from docker.redpanda.com rather than the FreeRADIUS internal
133-
# docker cache because redpandadata/redpanda is not mirrored there.
132+
# No redpanda service container: seastar exits EINVAL on these
133+
# runners with the default command, and GitHub Actions services
134+
# don't let us override it. Kafka module tests skip here; the
135+
# multi-server kafka-produce test covers the produce path instead.
134136
#
135-
redpanda:
136-
image: docker.redpanda.com/redpandadata/redpanda:latest
137-
ports:
138-
- 9092:9092
139-
options: >-
140-
--health-cmd "rpk cluster health --exit-when-healthy"
141-
--health-interval 10s
142-
--health-timeout 5s
143-
--health-retries 10
144137

145138
steps:
146139

@@ -199,8 +192,6 @@ jobs:
199192
imap_test_server_ssl_port: 1432
200193
smtp_test_server: 127.0.0.1
201194
smtp_test_server_port: 2525
202-
kafka_test_server: redpanda
203-
kafka_test_server_port: 9092
204195

205196
#
206197
# If the CI has failed and the branch is ci-debug then we start a tmate

.github/workflows/ci.yml

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -135,23 +135,13 @@ jobs:
135135
--health-retries 5
136136
137137
#
138-
# Redpanda - a Kafka-compatible broker. rlm_kafka tests talk to this
139-
# on port 9092. No setup script is needed: librdkafka auto-creates the
140-
# test topics on first produce.
138+
# No redpanda service container here - seastar exits EINVAL on the
139+
# self-hosted runners when started with the default command, and
140+
# GitHub Actions `services:` gives us no way to override the
141+
# command line. The kafka module tests are skipped in this
142+
# workflow; the multi-server kafka-produce test brings its own
143+
# broker up via docker-compose with the right flags.
141144
#
142-
# Pulled from docker.redpanda.com rather than the FreeRADIUS internal
143-
# docker cache because redpandadata/redpanda is not mirrored there.
144-
# Matches the image used by the multi-server test harness.
145-
#
146-
redpanda:
147-
image: docker.redpanda.com/redpandadata/redpanda:latest
148-
ports:
149-
- 9092:9092
150-
options: >-
151-
--health-cmd "rpk cluster health --exit-when-healthy"
152-
--health-interval 10s
153-
--health-timeout 5s
154-
--health-retries 10
155145

156146
steps:
157147

@@ -211,8 +201,6 @@ jobs:
211201
imap_test_server_ssl_port: 1432
212202
smtp_test_server: 127.0.0.1
213203
smtp_test_server_port: 2525
214-
kafka_test_server: redpanda
215-
kafka_test_server_port: 9092
216204

217205
- name: Run fuzzer
218206
uses: ./.github/actions/fuzzer

src/tests/multi-server/environments/kafka.yml.j2

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,20 +35,24 @@ services:
3535
# compose service name. Without this the broker tells clients to
3636
# reconnect at 127.0.0.1:9092 which only works when client and
3737
# broker share a network namespace.
38+
#
39+
# `--mode dev-container` is Redpanda's blessed single-node dev
40+
# preset: it relaxes IO/memory probing so the broker boots on a
41+
# shared CI runner without needing root, hugepages, or a tuned
42+
# seastar profile. Everything else is the minimum we need on top.
43+
#
3844
command:
3945
- redpanda
4046
- start
47+
- --mode
48+
- dev-container
4149
- --kafka-addr
4250
- PLAINTEXT://0.0.0.0:9092
4351
- --advertise-kafka-addr
4452
- PLAINTEXT://kafka:9092
45-
- --overprovisioned
4653
- --smp=1
4754
- --memory=1G
48-
- --reserve-memory=0M
4955
- --node-id=0
50-
- --check=false
51-
- --unsafe-bypass-fsync=true
5256
restart: unless-stopped
5357
#
5458
# Redpanda needs longer than you'd think on a busy CI runner: the

0 commit comments

Comments
 (0)