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.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/{ci_linux_x86_64_musl.yml → ci_linux_alpine_x86_64_musl.yml} +12 -9
  3. data/.github/workflows/ci_linux_alpine_x86_64_musl_complementary.yml +264 -0
  4. data/.github/workflows/ci_linux_debian_x86_64_gnu.yml +271 -0
  5. data/.github/workflows/ci_linux_debian_x86_64_gnu_complementary.yml +334 -0
  6. data/.github/workflows/{ci_linux_x86_64_gnu.yml → ci_linux_ubuntu_aarch64_gnu.yml} +15 -15
  7. data/.github/workflows/ci_linux_ubuntu_aarch64_gnu_complementary.yml +295 -0
  8. data/.github/workflows/ci_linux_ubuntu_x86_64_gnu.yml +281 -0
  9. data/.github/workflows/ci_linux_ubuntu_x86_64_gnu_complementary.yml +294 -0
  10. data/.github/workflows/ci_macos_arm64.yml +5 -5
  11. data/.github/workflows/push_linux_aarch64_gnu.yml +65 -0
  12. data/.github/workflows/push_linux_x86_64_gnu.yml +2 -2
  13. data/.github/workflows/push_linux_x86_64_musl.yml +3 -3
  14. data/.github/workflows/push_macos_arm64.yml +2 -2
  15. data/.github/workflows/push_ruby.yml +1 -1
  16. data/.github/workflows/trigger-wiki-refresh.yml +30 -0
  17. data/.github/workflows/verify-action-pins.yml +1 -1
  18. data/.gitignore +1 -0
  19. data/.rspec +1 -0
  20. data/CHANGELOG.md +7 -1
  21. data/README.md +34 -134
  22. data/dist/cyrus-sasl-2.1.28.tar.gz +0 -0
  23. data/dist/krb5-1.21.3.tar.gz +0 -0
  24. data/dist/openssl-3.0.16.tar.gz +0 -0
  25. data/dist/zlib-1.3.1.tar.gz +0 -0
  26. data/dist/zstd-1.5.7.tar.gz +0 -0
  27. data/docker-compose-ssl.yml +35 -0
  28. data/ext/build_common.sh +16 -1
  29. data/ext/build_linux_aarch64_gnu.sh +326 -0
  30. data/ext/build_linux_x86_64_gnu.sh +12 -1
  31. data/ext/build_linux_x86_64_musl.sh +18 -8
  32. data/ext/build_macos_arm64.sh +7 -0
  33. data/ext/generate-ssl-certs.sh +109 -0
  34. data/ext/librdkafka.so +0 -0
  35. data/karafka-rdkafka.gemspec +2 -0
  36. data/lib/rdkafka/bindings.rb +0 -1
  37. data/lib/rdkafka/consumer.rb +1 -1
  38. data/lib/rdkafka/version.rb +1 -1
  39. data/spec/integrations/ssl_stress_spec.rb +121 -0
  40. data/spec/{rdkafka → lib/rdkafka}/admin_spec.rb +16 -4
  41. data/spec/{rdkafka → lib/rdkafka}/consumer_spec.rb +50 -3
  42. data/spec/{rdkafka → lib/rdkafka}/metadata_spec.rb +2 -2
  43. data/spec/{rdkafka → lib/rdkafka}/producer/delivery_report_spec.rb +1 -1
  44. data/spec/{rdkafka → lib/rdkafka}/producer_spec.rb +6 -5
  45. data/spec/spec_helper.rb +45 -8
  46. metadata +76 -31
  47. /data/spec/{rdkafka → lib/rdkafka}/abstract_handle_spec.rb +0 -0
  48. /data/spec/{rdkafka → lib/rdkafka}/admin/create_acl_handle_spec.rb +0 -0
  49. /data/spec/{rdkafka → lib/rdkafka}/admin/create_acl_report_spec.rb +0 -0
  50. /data/spec/{rdkafka → lib/rdkafka}/admin/create_topic_handle_spec.rb +0 -0
  51. /data/spec/{rdkafka → lib/rdkafka}/admin/create_topic_report_spec.rb +0 -0
  52. /data/spec/{rdkafka → lib/rdkafka}/admin/delete_acl_handle_spec.rb +0 -0
  53. /data/spec/{rdkafka → lib/rdkafka}/admin/delete_acl_report_spec.rb +0 -0
  54. /data/spec/{rdkafka → lib/rdkafka}/admin/delete_topic_handle_spec.rb +0 -0
  55. /data/spec/{rdkafka → lib/rdkafka}/admin/delete_topic_report_spec.rb +0 -0
  56. /data/spec/{rdkafka → lib/rdkafka}/admin/describe_acl_handle_spec.rb +0 -0
  57. /data/spec/{rdkafka → lib/rdkafka}/admin/describe_acl_report_spec.rb +0 -0
  58. /data/spec/{rdkafka → lib/rdkafka}/bindings_spec.rb +0 -0
  59. /data/spec/{rdkafka → lib/rdkafka}/callbacks_spec.rb +0 -0
  60. /data/spec/{rdkafka → lib/rdkafka}/config_spec.rb +0 -0
  61. /data/spec/{rdkafka → lib/rdkafka}/consumer/headers_spec.rb +0 -0
  62. /data/spec/{rdkafka → lib/rdkafka}/consumer/message_spec.rb +0 -0
  63. /data/spec/{rdkafka → lib/rdkafka}/consumer/partition_spec.rb +0 -0
  64. /data/spec/{rdkafka → lib/rdkafka}/consumer/topic_partition_list_spec.rb +0 -0
  65. /data/spec/{rdkafka → lib/rdkafka}/error_spec.rb +0 -0
  66. /data/spec/{rdkafka → lib/rdkafka}/native_kafka_spec.rb +0 -0
  67. /data/spec/{rdkafka → lib/rdkafka}/producer/delivery_handle_spec.rb +0 -0
  68. /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 x86_64 GNU
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 1 * * *'
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: 30
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@a4effe49ee8ee5b8b5091268c473a4628afb5651 # v1.245.0
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@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3
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
- ./build_linux_x86_64_gnu.sh
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@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0
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@a4effe49ee8ee5b8b5091268c473a4628afb5651 # v1.245.0
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