karafka-rdkafka 0.21.0.rc1-x86_64-linux-musl → 0.21.0.rc2-x86_64-linux-musl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/{ci_linux_x86_64_musl.yml → ci_linux_alpine_x86_64_musl.yml} +12 -9
- data/.github/workflows/ci_linux_alpine_x86_64_musl_complementary.yml +264 -0
- data/.github/workflows/ci_linux_debian_x86_64_gnu.yml +271 -0
- data/.github/workflows/ci_linux_debian_x86_64_gnu_complementary.yml +334 -0
- data/.github/workflows/{ci_linux_x86_64_gnu.yml → ci_linux_ubuntu_aarch64_gnu.yml} +15 -15
- data/.github/workflows/ci_linux_ubuntu_aarch64_gnu_complementary.yml +295 -0
- data/.github/workflows/ci_linux_ubuntu_x86_64_gnu.yml +281 -0
- data/.github/workflows/ci_linux_ubuntu_x86_64_gnu_complementary.yml +294 -0
- data/.github/workflows/ci_macos_arm64.yml +5 -5
- data/.github/workflows/push_linux_aarch64_gnu.yml +65 -0
- data/.github/workflows/push_linux_x86_64_gnu.yml +2 -2
- data/.github/workflows/push_linux_x86_64_musl.yml +3 -3
- data/.github/workflows/push_macos_arm64.yml +2 -2
- data/.github/workflows/push_ruby.yml +1 -1
- data/.github/workflows/trigger-wiki-refresh.yml +30 -0
- data/.github/workflows/verify-action-pins.yml +1 -1
- data/.gitignore +1 -0
- data/.rspec +1 -0
- data/CHANGELOG.md +7 -1
- data/README.md +34 -134
- data/dist/cyrus-sasl-2.1.28.tar.gz +0 -0
- data/dist/krb5-1.21.3.tar.gz +0 -0
- data/dist/openssl-3.0.16.tar.gz +0 -0
- data/dist/zlib-1.3.1.tar.gz +0 -0
- data/dist/zstd-1.5.7.tar.gz +0 -0
- data/docker-compose-ssl.yml +35 -0
- data/ext/build_common.sh +16 -1
- data/ext/build_linux_aarch64_gnu.sh +326 -0
- data/ext/build_linux_x86_64_gnu.sh +12 -1
- data/ext/build_linux_x86_64_musl.sh +18 -8
- data/ext/build_macos_arm64.sh +7 -0
- data/ext/generate-ssl-certs.sh +109 -0
- data/ext/librdkafka.so +0 -0
- data/karafka-rdkafka.gemspec +2 -0
- data/lib/rdkafka/bindings.rb +0 -1
- data/lib/rdkafka/consumer.rb +1 -1
- data/lib/rdkafka/version.rb +1 -1
- data/spec/integrations/ssl_stress_spec.rb +121 -0
- data/spec/{rdkafka → lib/rdkafka}/admin_spec.rb +16 -4
- data/spec/{rdkafka → lib/rdkafka}/consumer_spec.rb +50 -3
- data/spec/{rdkafka → lib/rdkafka}/metadata_spec.rb +2 -2
- data/spec/{rdkafka → lib/rdkafka}/producer/delivery_report_spec.rb +1 -1
- data/spec/{rdkafka → lib/rdkafka}/producer_spec.rb +6 -5
- data/spec/spec_helper.rb +45 -8
- metadata +76 -31
- /data/spec/{rdkafka → lib/rdkafka}/abstract_handle_spec.rb +0 -0
- /data/spec/{rdkafka → lib/rdkafka}/admin/create_acl_handle_spec.rb +0 -0
- /data/spec/{rdkafka → lib/rdkafka}/admin/create_acl_report_spec.rb +0 -0
- /data/spec/{rdkafka → lib/rdkafka}/admin/create_topic_handle_spec.rb +0 -0
- /data/spec/{rdkafka → lib/rdkafka}/admin/create_topic_report_spec.rb +0 -0
- /data/spec/{rdkafka → lib/rdkafka}/admin/delete_acl_handle_spec.rb +0 -0
- /data/spec/{rdkafka → lib/rdkafka}/admin/delete_acl_report_spec.rb +0 -0
- /data/spec/{rdkafka → lib/rdkafka}/admin/delete_topic_handle_spec.rb +0 -0
- /data/spec/{rdkafka → lib/rdkafka}/admin/delete_topic_report_spec.rb +0 -0
- /data/spec/{rdkafka → lib/rdkafka}/admin/describe_acl_handle_spec.rb +0 -0
- /data/spec/{rdkafka → lib/rdkafka}/admin/describe_acl_report_spec.rb +0 -0
- /data/spec/{rdkafka → lib/rdkafka}/bindings_spec.rb +0 -0
- /data/spec/{rdkafka → lib/rdkafka}/callbacks_spec.rb +0 -0
- /data/spec/{rdkafka → lib/rdkafka}/config_spec.rb +0 -0
- /data/spec/{rdkafka → lib/rdkafka}/consumer/headers_spec.rb +0 -0
- /data/spec/{rdkafka → lib/rdkafka}/consumer/message_spec.rb +0 -0
- /data/spec/{rdkafka → lib/rdkafka}/consumer/partition_spec.rb +0 -0
- /data/spec/{rdkafka → lib/rdkafka}/consumer/topic_partition_list_spec.rb +0 -0
- /data/spec/{rdkafka → lib/rdkafka}/error_spec.rb +0 -0
- /data/spec/{rdkafka → lib/rdkafka}/native_kafka_spec.rb +0 -0
- /data/spec/{rdkafka → lib/rdkafka}/producer/delivery_handle_spec.rb +0 -0
- /data/spec/{rdkafka → lib/rdkafka}/producer/partitions_count_cache_spec.rb +0 -0
@@ -0,0 +1,334 @@
|
|
1
|
+
# CI Strategy: Complementary Testing for SSL and System Library Regressions
|
2
|
+
#
|
3
|
+
# This workflow runs complementary tests that don't need to block PRs but are essential
|
4
|
+
# for catching regressions in SSL functionality and system library compatibility.
|
5
|
+
# It complements the main CI by testing stable-but-critical functionality on a nightly
|
6
|
+
# schedule and when workflow changes are made.
|
7
|
+
#
|
8
|
+
# WHY COMPLEMENTARY TESTING:
|
9
|
+
# - SSL specs have been stable for 3+ years and rarely break due to code changes
|
10
|
+
# - Integration specs test OS library compatibility, which changes with system updates
|
11
|
+
# - These tests catch regressions from external changes (OpenSSL updates, system libs)
|
12
|
+
# - Running every 3 days to prevent these slower tests from blocking PR velocity
|
13
|
+
# - Manual triggering allows testing workflow changes before they go into schedule
|
14
|
+
#
|
15
|
+
# WHY WE TEST DEBIAN BOOKWORM AND TRIXIE:
|
16
|
+
# - Different OpenSSL versions and SSL library implementations
|
17
|
+
# - Different system library versions that affect SSL handshakes and compatibility
|
18
|
+
# - Forward compatibility testing with Trixie (Debian testing/future stable)
|
19
|
+
# - Catching SSL regressions from package updates in both stable and testing
|
20
|
+
#
|
21
|
+
# SSL TESTING (specs_install + specs_precompiled):
|
22
|
+
# - Tests SSL/TLS connectivity with Kafka using docker-compose-ssl.yml
|
23
|
+
# - Validates certificate handling and SSL handshakes across Ruby and Debian versions
|
24
|
+
# - Ensures SSL works with both compiled-from-source and precompiled flows
|
25
|
+
# - Catches OpenSSL version compatibility issues and SSL library regressions
|
26
|
+
# - Tests real SSL scenarios that mirror production deployments
|
27
|
+
#
|
28
|
+
# INTEGRATION TESTING (integration specs in both jobs):
|
29
|
+
# - Tests system library compatibility without requiring Kafka infrastructure
|
30
|
+
# - Validates libssl, libsasl2, libzstd, zlib integration across OS versions
|
31
|
+
# - Ensures native extensions work with different system library versions
|
32
|
+
# - Catches regressions from Debian package updates and system changes
|
33
|
+
# - Tests both compilation and precompiled library compatibility
|
34
|
+
#
|
35
|
+
# SCHEDULING STRATEGY:
|
36
|
+
# - Runs every 3 days at 3 AM to catch system/library changes from base image updates
|
37
|
+
# - Triggers on workflow file changes to validate CI modifications
|
38
|
+
# - Manual dispatch available for ad-hoc regression testing
|
39
|
+
# - Separate artifact naming prevents interference with main CI
|
40
|
+
#
|
41
|
+
# This approach ensures comprehensive coverage while keeping PR CI fast and focused
|
42
|
+
# on code-related issues rather than infrastructure/system regressions.
|
43
|
+
|
44
|
+
name: CI Linux Complementary Debian Multi-Version x86_64 GNU
|
45
|
+
|
46
|
+
concurrency:
|
47
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
48
|
+
cancel-in-progress: true
|
49
|
+
|
50
|
+
on:
|
51
|
+
schedule:
|
52
|
+
- cron: '0 3 */3 * *'
|
53
|
+
workflow_dispatch:
|
54
|
+
push:
|
55
|
+
paths:
|
56
|
+
- '.github/workflows/ci_linux_debian_x86_64_gnu_complementary.yml'
|
57
|
+
branches: [ main, master ]
|
58
|
+
pull_request:
|
59
|
+
paths:
|
60
|
+
- '.github/workflows/ci_linux_debian_x86_64_gnu_complementary.yml'
|
61
|
+
branches: [ main, master ]
|
62
|
+
|
63
|
+
permissions:
|
64
|
+
contents: read
|
65
|
+
|
66
|
+
env:
|
67
|
+
BUNDLE_RETRY: 6
|
68
|
+
BUNDLE_JOBS: 4
|
69
|
+
|
70
|
+
jobs:
|
71
|
+
build_precompiled:
|
72
|
+
timeout-minutes: 50
|
73
|
+
strategy:
|
74
|
+
fail-fast: false
|
75
|
+
matrix:
|
76
|
+
debian:
|
77
|
+
- 'bookworm'
|
78
|
+
- 'trixie'
|
79
|
+
runs-on: ubuntu-22.04 # renovate: ignore
|
80
|
+
steps:
|
81
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
82
|
+
with:
|
83
|
+
fetch-depth: 0
|
84
|
+
- name: Install build dependencies
|
85
|
+
run: |
|
86
|
+
sudo apt-get update
|
87
|
+
sudo apt-get install -y --no-install-recommends \
|
88
|
+
build-essential \
|
89
|
+
gcc \
|
90
|
+
g++ \
|
91
|
+
make \
|
92
|
+
tar \
|
93
|
+
gzip \
|
94
|
+
wget \
|
95
|
+
curl \
|
96
|
+
file \
|
97
|
+
pkg-config \
|
98
|
+
autoconf \
|
99
|
+
automake \
|
100
|
+
libtool \
|
101
|
+
python3 \
|
102
|
+
git \
|
103
|
+
ca-certificates \
|
104
|
+
patch \
|
105
|
+
libsasl2-dev \
|
106
|
+
libssl-dev \
|
107
|
+
zlib1g-dev \
|
108
|
+
libzstd-dev \
|
109
|
+
bison \
|
110
|
+
flex \
|
111
|
+
perl \
|
112
|
+
binutils-dev
|
113
|
+
- name: Cache build-tmp directory
|
114
|
+
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4
|
115
|
+
with:
|
116
|
+
path: ext/build-tmp
|
117
|
+
key: build-tmp-complementary-${{ runner.os }}-${{ matrix.debian }}-${{ hashFiles('ext/*.sh', 'ext/Rakefile') }}-v2
|
118
|
+
- name: Build precompiled librdkafka.so
|
119
|
+
run: |
|
120
|
+
cd ext
|
121
|
+
./build_linux_x86_64_gnu.sh
|
122
|
+
- name: Upload precompiled library
|
123
|
+
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
124
|
+
with:
|
125
|
+
name: librdkafka-precompiled-linux-complementary-${{ matrix.debian }}
|
126
|
+
path: ext/
|
127
|
+
retention-days: 1
|
128
|
+
|
129
|
+
specs_install:
|
130
|
+
timeout-minutes: 50
|
131
|
+
strategy:
|
132
|
+
fail-fast: false
|
133
|
+
matrix:
|
134
|
+
ruby:
|
135
|
+
- '3.4'
|
136
|
+
- '3.3'
|
137
|
+
- '3.2'
|
138
|
+
- '3.1'
|
139
|
+
debian:
|
140
|
+
- 'bookworm'
|
141
|
+
- 'trixie'
|
142
|
+
exclude:
|
143
|
+
- ruby: '3.1'
|
144
|
+
debian: 'trixie'
|
145
|
+
runs-on: ubuntu-latest
|
146
|
+
steps:
|
147
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
148
|
+
with:
|
149
|
+
fetch-depth: 0
|
150
|
+
|
151
|
+
- name: Start Kafka with Docker Compose
|
152
|
+
run: |
|
153
|
+
./ext/generate-ssl-certs.sh
|
154
|
+
docker compose -f docker-compose-ssl.yml up -d
|
155
|
+
echo "Waiting for Kafka to be ready..."
|
156
|
+
sleep 10
|
157
|
+
for i in {1..30}; do
|
158
|
+
if docker compose exec -T kafka kafka-topics --bootstrap-server localhost:9092 --list >/dev/null 2>&1; then
|
159
|
+
echo "Kafka topics command succeeded!"
|
160
|
+
break
|
161
|
+
fi
|
162
|
+
sleep 2
|
163
|
+
done
|
164
|
+
|
165
|
+
- name: Install dependencies
|
166
|
+
env:
|
167
|
+
RDKAFKA_EXT_PATH: ${{ github.workspace }}/ext
|
168
|
+
run: |
|
169
|
+
docker run --rm \
|
170
|
+
--network host \
|
171
|
+
-v "${{ github.workspace }}:/workspace" \
|
172
|
+
-w /workspace \
|
173
|
+
-e "RDKAFKA_EXT_PATH=/workspace/ext" \
|
174
|
+
ruby:${{ matrix.ruby }}-${{ matrix.debian }} \
|
175
|
+
sh -c 'apt-get update && \
|
176
|
+
apt-get upgrade -y openssl libssl3 libssl-dev && \
|
177
|
+
apt-get install -y git build-essential pkg-config \
|
178
|
+
libssl-dev libsasl2-dev zlib1g-dev libzstd-dev && \
|
179
|
+
git config --global --add safe.directory /workspace && \
|
180
|
+
bundle config set --local path vendor/bundle && \
|
181
|
+
bundle install'
|
182
|
+
|
183
|
+
- name: Build gem with mini_portile
|
184
|
+
run: |
|
185
|
+
docker run --rm \
|
186
|
+
--network host \
|
187
|
+
-v "${{ github.workspace }}:/workspace" \
|
188
|
+
-w /workspace \
|
189
|
+
ruby:${{ matrix.ruby }}-${{ matrix.debian }} \
|
190
|
+
sh -c 'apt-get update && \
|
191
|
+
apt-get upgrade -y openssl libssl3 libssl-dev && \
|
192
|
+
apt-get install -y git build-essential pkg-config \
|
193
|
+
libssl-dev libsasl2-dev zlib1g-dev libzstd-dev && \
|
194
|
+
git config --global --add safe.directory /workspace && \
|
195
|
+
bundle config set --local path vendor/bundle && \
|
196
|
+
bundle install && \
|
197
|
+
cd ext && bundle exec rake'
|
198
|
+
|
199
|
+
- name: Run all specs in SSL (compiled flow)
|
200
|
+
env:
|
201
|
+
RDKAFKA_EXT_PATH: ${{ github.workspace }}/ext
|
202
|
+
KAFKA_SSL_ENABLED: "true"
|
203
|
+
run: |
|
204
|
+
docker run --rm \
|
205
|
+
--network host \
|
206
|
+
-v "${{ github.workspace }}:/workspace" \
|
207
|
+
-w /workspace \
|
208
|
+
-e "RDKAFKA_EXT_PATH=/workspace/ext" \
|
209
|
+
-e "KAFKA_SSL_ENABLED=true" \
|
210
|
+
ruby:${{ matrix.ruby }}-${{ matrix.debian }} \
|
211
|
+
sh -c 'apt-get update && \
|
212
|
+
apt-get upgrade -y openssl libssl3 libssl-dev && \
|
213
|
+
apt-get install -y git build-essential pkg-config \
|
214
|
+
libssl-dev libsasl2-dev zlib1g-dev libzstd-dev default-jdk && \
|
215
|
+
git config --global --add safe.directory /workspace && \
|
216
|
+
bundle config set --local path vendor/bundle && \
|
217
|
+
bundle install && \
|
218
|
+
echo "=== SSL Library Versions (${{ matrix.debian }}) ===" && \
|
219
|
+
openssl version && \
|
220
|
+
dpkg -l | grep -E "(libssl|openssl)" && \
|
221
|
+
echo "=== Running SSL Specs (Compiled) ===" && \
|
222
|
+
bundle exec rspec'
|
223
|
+
|
224
|
+
- name: Run integration specs (compiled flow)
|
225
|
+
run: |
|
226
|
+
docker run --rm \
|
227
|
+
-v "${{ github.workspace }}:/workspace" \
|
228
|
+
-w /workspace \
|
229
|
+
ruby:${{ matrix.ruby }}-${{ matrix.debian }} \
|
230
|
+
sh -c 'apt-get update && \
|
231
|
+
apt-get upgrade -y openssl libssl3 libssl-dev && \
|
232
|
+
apt-get install -y git build-essential pkg-config \
|
233
|
+
libssl-dev libsasl2-dev zlib1g-dev libzstd-dev libcurl4-openssl-dev libcurl4 && \
|
234
|
+
git config --global --add safe.directory /workspace && \
|
235
|
+
bundle config set --local path vendor/bundle && \
|
236
|
+
bundle install && \
|
237
|
+
echo "=== OS Library Versions (${{ matrix.debian }}) ===" && \
|
238
|
+
openssl version && \
|
239
|
+
dpkg -l | grep -E "(libssl|libsasl|libzstd|zlib)" && \
|
240
|
+
echo "=== Running Integration Specs (Compiled) ===" && \
|
241
|
+
for file in $(ls spec/integrations/*_spec.rb); do \
|
242
|
+
echo "Running $file with Ruby ${{ matrix.ruby }} on ${{ matrix.debian }}"; \
|
243
|
+
bundle exec ruby "$file" || exit 1; \
|
244
|
+
done'
|
245
|
+
|
246
|
+
specs_precompiled:
|
247
|
+
timeout-minutes: 50
|
248
|
+
needs: build_precompiled
|
249
|
+
strategy:
|
250
|
+
fail-fast: false
|
251
|
+
matrix:
|
252
|
+
ruby:
|
253
|
+
- '3.4'
|
254
|
+
- '3.3'
|
255
|
+
- '3.2'
|
256
|
+
- '3.1'
|
257
|
+
debian:
|
258
|
+
- 'bookworm'
|
259
|
+
- 'trixie'
|
260
|
+
exclude:
|
261
|
+
- ruby: '3.1'
|
262
|
+
debian: 'trixie'
|
263
|
+
runs-on: ubuntu-latest
|
264
|
+
steps:
|
265
|
+
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
266
|
+
with:
|
267
|
+
fetch-depth: 0
|
268
|
+
- name: Download precompiled library
|
269
|
+
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
|
270
|
+
with:
|
271
|
+
name: librdkafka-precompiled-linux-complementary-${{ matrix.debian }}
|
272
|
+
path: ext/
|
273
|
+
|
274
|
+
- name: Start Kafka with Docker Compose
|
275
|
+
run: |
|
276
|
+
./ext/generate-ssl-certs.sh
|
277
|
+
docker compose -f docker-compose-ssl.yml up -d
|
278
|
+
echo "Waiting for Kafka to be ready..."
|
279
|
+
sleep 10
|
280
|
+
for i in {1..30}; do
|
281
|
+
if docker compose exec -T kafka kafka-topics --bootstrap-server localhost:9092 --list >/dev/null 2>&1; then
|
282
|
+
echo "Kafka topics command succeeded!"
|
283
|
+
break
|
284
|
+
fi
|
285
|
+
sleep 2
|
286
|
+
done
|
287
|
+
|
288
|
+
- name: Run specs with precompiled library and SSL
|
289
|
+
env:
|
290
|
+
RDKAFKA_EXT_PATH: ${{ github.workspace }}/ext
|
291
|
+
KAFKA_SSL_ENABLED: "true"
|
292
|
+
run: |
|
293
|
+
docker run --rm \
|
294
|
+
--network host \
|
295
|
+
-v "${{ github.workspace }}:/workspace" \
|
296
|
+
-w /workspace \
|
297
|
+
-e "RDKAFKA_EXT_PATH=/workspace/ext" \
|
298
|
+
-e "KAFKA_SSL_ENABLED=true" \
|
299
|
+
ruby:${{ matrix.ruby }}-${{ matrix.debian }} \
|
300
|
+
sh -c 'apt-get update && \
|
301
|
+
apt-get install -y git default-jdk && \
|
302
|
+
git config --global --add safe.directory /workspace && \
|
303
|
+
bundle config set --local path vendor/bundle && \
|
304
|
+
bundle install && \
|
305
|
+
echo "=== SSL Library Versions (${{ matrix.debian }}) ===" && \
|
306
|
+
openssl version && \
|
307
|
+
dpkg -l | grep -E "(libssl|openssl)" && \
|
308
|
+
echo "=== Running SSL Specs (Precompiled) ===" && \
|
309
|
+
bundle exec rspec'
|
310
|
+
|
311
|
+
- name: Run integration specs (precompiled flow)
|
312
|
+
env:
|
313
|
+
RDKAFKA_EXT_PATH: ${{ github.workspace }}/ext
|
314
|
+
run: |
|
315
|
+
docker run --rm \
|
316
|
+
-v "${{ github.workspace }}:/workspace" \
|
317
|
+
-w /workspace \
|
318
|
+
-e "RDKAFKA_EXT_PATH=/workspace/ext" \
|
319
|
+
ruby:${{ matrix.ruby }}-${{ matrix.debian }} \
|
320
|
+
sh -c 'apt-get update && \
|
321
|
+
apt-get upgrade -y openssl libssl3 libssl-dev && \
|
322
|
+
apt-get install -y git build-essential pkg-config \
|
323
|
+
libssl-dev libsasl2-dev zlib1g-dev libzstd-dev libcurl4-openssl-dev libcurl4 && \
|
324
|
+
git config --global --add safe.directory /workspace && \
|
325
|
+
bundle config set --local path vendor/bundle && \
|
326
|
+
bundle install && \
|
327
|
+
echo "=== OS Library Versions (${{ matrix.debian }}) ===" && \
|
328
|
+
openssl version && \
|
329
|
+
dpkg -l | grep -E "(libssl|libsasl|libzstd|zlib)" && \
|
330
|
+
echo "=== Running Integration Specs (Precompiled) ===" && \
|
331
|
+
for file in $(ls spec/integrations/*_spec.rb); do \
|
332
|
+
echo "Running $file with Ruby ${{ matrix.ruby }} on ${{ matrix.debian }} (precompiled)"; \
|
333
|
+
bundle exec ruby "$file" || exit 1; \
|
334
|
+
done'
|
@@ -32,7 +32,7 @@
|
|
32
32
|
# such as system library incompatibilities, compiler-specific bugs, or static linking
|
33
33
|
# problems that only manifest on specific Ubuntu versions.
|
34
34
|
|
35
|
-
name: CI Linux
|
35
|
+
name: CI Linux Ubuntu aarch64 GNU
|
36
36
|
|
37
37
|
concurrency:
|
38
38
|
group: ${{ github.workflow }}-${{ github.ref }}
|
@@ -44,7 +44,7 @@ on:
|
|
44
44
|
push:
|
45
45
|
branches: [ main, master ]
|
46
46
|
schedule:
|
47
|
-
- cron: '0
|
47
|
+
- cron: '0 4 * * *'
|
48
48
|
|
49
49
|
permissions:
|
50
50
|
contents: read
|
@@ -55,7 +55,7 @@ env:
|
|
55
55
|
|
56
56
|
jobs:
|
57
57
|
specs_install:
|
58
|
-
timeout-minutes:
|
58
|
+
timeout-minutes: 45
|
59
59
|
strategy:
|
60
60
|
fail-fast: false
|
61
61
|
matrix:
|
@@ -72,19 +72,19 @@ jobs:
|
|
72
72
|
coverage: 'true'
|
73
73
|
- ruby: 'jruby-10.0'
|
74
74
|
continue-on-error: true
|
75
|
-
runs-on: ubuntu-${{ matrix.ubuntu-version }}
|
75
|
+
runs-on: ubuntu-${{ matrix.ubuntu-version }}-arm
|
76
76
|
steps:
|
77
77
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
78
78
|
with:
|
79
79
|
fetch-depth: 0
|
80
80
|
- name: Set up Ruby
|
81
|
-
uses: ruby/setup-ruby@
|
81
|
+
uses: ruby/setup-ruby@2a7b30092b0caf9c046252510f9273b4875f3db9 # v1.254.0
|
82
82
|
with:
|
83
83
|
ruby-version: ${{matrix.ruby}}
|
84
84
|
bundler-cache: false
|
85
85
|
- name: Start Kafka with Docker Compose
|
86
86
|
run: |
|
87
|
-
docker compose up -d
|
87
|
+
docker compose -f docker-compose.yml up -d
|
88
88
|
echo "Waiting for Kafka to be ready..."
|
89
89
|
|
90
90
|
sleep 10
|
@@ -117,7 +117,7 @@ jobs:
|
|
117
117
|
set -e
|
118
118
|
cd ext && bundle exec rake
|
119
119
|
cd ..
|
120
|
-
- name: Run all specs
|
120
|
+
- name: Run all specs in PLAINTEXT
|
121
121
|
env:
|
122
122
|
GITHUB_COVERAGE: ${{matrix.coverage}}
|
123
123
|
RDKAFKA_EXT_PATH: ${{ github.workspace }}/ext
|
@@ -130,7 +130,7 @@ jobs:
|
|
130
130
|
# We precompile on older Ubuntu and check compatibility by running specs since we aim to
|
131
131
|
# release only one precompiled version for all supported Ubuntu versions
|
132
132
|
# This is why we do not want Renovate to update it automatically
|
133
|
-
runs-on: ubuntu-22.04 # renovate: ignore
|
133
|
+
runs-on: ubuntu-22.04-arm # renovate: ignore
|
134
134
|
steps:
|
135
135
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
136
136
|
with:
|
@@ -165,14 +165,14 @@ jobs:
|
|
165
165
|
perl \
|
166
166
|
binutils-dev
|
167
167
|
- name: Cache build-tmp directory
|
168
|
-
uses: actions/cache@
|
168
|
+
uses: actions/cache@0400d5f644dc74513175e3cd8d07132dd4860809 # v4.2.4
|
169
169
|
with:
|
170
170
|
path: ext/build-tmp
|
171
171
|
key: build-tmp-${{ runner.os }}-${{ hashFiles('ext/*.sh', 'ext/Rakefile') }}-v2
|
172
172
|
- name: Build precompiled librdkafka.so
|
173
173
|
run: |
|
174
174
|
cd ext
|
175
|
-
./
|
175
|
+
./build_linux_aarch64_gnu.sh
|
176
176
|
- name: Upload precompiled library
|
177
177
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
178
178
|
with:
|
@@ -198,24 +198,24 @@ jobs:
|
|
198
198
|
ubuntu-version: '24.04'
|
199
199
|
coverage: 'true'
|
200
200
|
|
201
|
-
runs-on: ubuntu-${{ matrix.ubuntu-version }}
|
201
|
+
runs-on: ubuntu-${{ matrix.ubuntu-version }}-arm
|
202
202
|
steps:
|
203
203
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
204
204
|
with:
|
205
205
|
fetch-depth: 0
|
206
206
|
- name: Download precompiled library
|
207
|
-
uses: actions/download-artifact@
|
207
|
+
uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0
|
208
208
|
with:
|
209
209
|
name: librdkafka-precompiled-linux
|
210
210
|
path: ext/
|
211
211
|
- name: Set up Ruby
|
212
|
-
uses: ruby/setup-ruby@
|
212
|
+
uses: ruby/setup-ruby@2a7b30092b0caf9c046252510f9273b4875f3db9 # v1.254.0
|
213
213
|
with:
|
214
214
|
ruby-version: ${{ matrix.ruby }}
|
215
215
|
bundler-cache: false
|
216
216
|
- name: Start Kafka with Docker Compose
|
217
217
|
run: |
|
218
|
-
docker compose up -d
|
218
|
+
docker compose -f docker-compose.yml up -d
|
219
219
|
echo "Waiting for Kafka to be ready..."
|
220
220
|
|
221
221
|
sleep 10
|
@@ -263,7 +263,7 @@ jobs:
|
|
263
263
|
echo "Build dependencies removal completed"
|
264
264
|
echo "Remaining build tools:"
|
265
265
|
which gcc g++ make 2>/dev/null || echo "No build tools found in PATH (good!)"
|
266
|
-
- name: Run specs with precompiled library
|
266
|
+
- name: Run specs with precompiled library and PLAINTEXT
|
267
267
|
env:
|
268
268
|
GITHUB_COVERAGE: ${{ matrix.coverage }}
|
269
269
|
RDKAFKA_EXT_PATH: ${{ github.workspace }}/ext
|