rake-compiler-dock 1.9.1 → 1.11.0.rc1

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 (39) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/.github/workflows/ci.yml +74 -74
  4. data/.github/workflows/publish-images.yml +798 -46
  5. data/.github/workflows/publish-images.yml.erb +121 -0
  6. data/.github/workflows/release-images.yml +854 -45
  7. data/{History.md → CHANGELOG.md} +37 -0
  8. data/CONTRIBUTING.md +44 -1
  9. data/Dockerfile.jruby +3 -3
  10. data/Dockerfile.mri.erb +103 -58
  11. data/README.md +48 -6
  12. data/Rakefile +143 -40
  13. data/build/buildkitd.toml +2 -0
  14. data/build/gem_helper.rb +2 -2
  15. data/build/mk_musl_cross.sh +1 -1
  16. data/build/parallel_docker_build.rb +64 -23
  17. data/build/patches/{rake-compiler-1.2.9 → rake-compiler-1.3.1}/0004-Enable-build-of-static-libruby.patch +4 -2
  18. data/build/patches/{rake-compiler-1.2.9 → rake-compiler-1.3.1}/0005-build-miniruby-first.patch +2 -3
  19. data/build/patches/rake-compiler-1.3.1/0006-ruby-4-rubyspec-capiext.patch +16 -0
  20. data/build/sudoers +1 -1
  21. data/lib/rake_compiler_dock/starter.rb +11 -1
  22. data/lib/rake_compiler_dock/version.rb +2 -2
  23. data/lib/rake_compiler_dock.rb +12 -17
  24. data/mingw64-ucrt/README.md +0 -44
  25. data/test/env/Dockerfile.alpine +1 -1
  26. data/test/fixtures/mig_test_rpc.defs +8 -0
  27. data/test/rcd_test/Rakefile +1 -0
  28. data/test/rcd_test/ext/mri/extconf.rb +2 -0
  29. data/test/rcd_test/rcd_test.gemspec +1 -1
  30. data/test/rcd_test/test/test_basic.rb +11 -0
  31. data/test/test_environment_variables.rb +13 -0
  32. data/test/test_mig.rb +18 -0
  33. data/test/test_parallel_docker_build.rb +2 -2
  34. data/test/test_starter.rb +6 -0
  35. data/test/test_versions.rb +1 -1
  36. data.tar.gz.sig +0 -0
  37. metadata +39 -9
  38. metadata.gz.sig +0 -0
  39. data/test/env/Dockerfile.centos +0 -24
@@ -1,81 +1,833 @@
1
- name: Publish docker images to GHCR
2
- concurrency:
3
- group: "${{github.workflow}}-${{github.ref}}"
4
- cancel-in-progress: true
1
+ # This file is generated. Please edit publish-images.yml.erb instead!
2
+
3
+
4
+ name: Weekly publish docker images to GHCR
5
5
  on:
6
6
  workflow_dispatch:
7
7
  schedule:
8
8
  - cron: "0 3 * * 3" # At 03:00 on Wednesday # https://crontab.guru/#0_3_*_*_3
9
9
 
10
+
11
+ concurrency:
12
+ group: "${{github.workflow}}-${{github.ref}}"
13
+ cancel-in-progress: true
14
+
10
15
  jobs:
11
- build:
16
+
17
+ aarch64-linux-musl:
18
+ name: "build aarch64-linux-musl ${{ matrix.os }}"
19
+ needs: common-7f790bc
20
+ strategy:
21
+ fail-fast: false
22
+ matrix:
23
+ os:
24
+ - ubuntu-latest
25
+ - ubuntu-24.04-arm
26
+ runs-on: ${{ matrix.os }}
27
+ steps:
28
+ - uses: actions/checkout@v4
29
+
30
+ - uses: ruby/setup-ruby@v1
31
+ with:
32
+ ruby-version: "3.4"
33
+ bundler-cache: true
34
+
35
+ - name: Fetch docker buildx layer cache
36
+ uses: actions/cache@v4
37
+ with:
38
+ path: tmp/build-cache-${{ runner.arch }}
39
+ key: ${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-musl-${{ github.sha }}
40
+ restore-keys: |
41
+ ${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-musl
42
+ ${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc
43
+ enableCrossOsArchive: true
44
+ - name: Build the image layers aarch64-linux-musl on ${{ runner.arch }}
45
+ env:
46
+ RCD_TASK_DEPENDENCIES: "false"
47
+ run: |
48
+ # Change docker to a cache-able driver
49
+ docker buildx create --driver docker-container --use
50
+ bundle exec rake build:common-723ac6e RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new"
51
+ - name: Update and prune docker buildx layer cache
52
+ run: |
53
+ rm -rf tmp/build-cache-${{ runner.arch }}
54
+ mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }}
55
+
56
+ common-7f790bc:
57
+ name: "build common-7f790bc ${{ matrix.os }}"
58
+ needs: common-8c26987
59
+ strategy:
60
+ fail-fast: false
61
+ matrix:
62
+ os:
63
+ - ubuntu-latest
64
+ - ubuntu-24.04-arm
65
+ runs-on: ${{ matrix.os }}
66
+ steps:
67
+ - uses: actions/checkout@v4
68
+
69
+ - uses: ruby/setup-ruby@v1
70
+ with:
71
+ ruby-version: "3.4"
72
+ bundler-cache: true
73
+
74
+ - name: Fetch docker buildx layer cache
75
+ uses: actions/cache@v4
76
+ with:
77
+ path: tmp/build-cache-${{ runner.arch }}
78
+ key: ${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc-${{ github.sha }}
79
+ restore-keys: |
80
+ ${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc
81
+ ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987
82
+ enableCrossOsArchive: true
83
+ - name: Build the image layers common-7f790bc on ${{ runner.arch }}
84
+ env:
85
+ RCD_TASK_DEPENDENCIES: "false"
86
+ run: |
87
+ # Change docker to a cache-able driver
88
+ docker buildx create --driver docker-container --use
89
+ bundle exec rake build:common-7f790bc RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new"
90
+ - name: Update and prune docker buildx layer cache
91
+ run: |
92
+ rm -rf tmp/build-cache-${{ runner.arch }}
93
+ mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }}
94
+
95
+ arm-linux-musl:
96
+ name: "build arm-linux-musl ${{ matrix.os }}"
97
+ needs: common-7f790bc
98
+ strategy:
99
+ fail-fast: false
100
+ matrix:
101
+ os:
102
+ - ubuntu-latest
103
+ - ubuntu-24.04-arm
104
+ runs-on: ${{ matrix.os }}
105
+ steps:
106
+ - uses: actions/checkout@v4
107
+
108
+ - uses: ruby/setup-ruby@v1
109
+ with:
110
+ ruby-version: "3.4"
111
+ bundler-cache: true
112
+
113
+ - name: Fetch docker buildx layer cache
114
+ uses: actions/cache@v4
115
+ with:
116
+ path: tmp/build-cache-${{ runner.arch }}
117
+ key: ${{ runner.os }}-on-${{ runner.arch }}-arm-linux-musl-${{ github.sha }}
118
+ restore-keys: |
119
+ ${{ runner.os }}-on-${{ runner.arch }}-arm-linux-musl
120
+ ${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc
121
+ enableCrossOsArchive: true
122
+ - name: Build the image layers arm-linux-musl on ${{ runner.arch }}
123
+ env:
124
+ RCD_TASK_DEPENDENCIES: "false"
125
+ run: |
126
+ # Change docker to a cache-able driver
127
+ docker buildx create --driver docker-container --use
128
+ bundle exec rake build:common-fbc527a RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new"
129
+ - name: Update and prune docker buildx layer cache
130
+ run: |
131
+ rm -rf tmp/build-cache-${{ runner.arch }}
132
+ mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }}
133
+
134
+ x86-linux-musl:
135
+ name: "build x86-linux-musl ${{ matrix.os }}"
136
+ needs: common-7f790bc
137
+ strategy:
138
+ fail-fast: false
139
+ matrix:
140
+ os:
141
+ - ubuntu-latest
142
+ - ubuntu-24.04-arm
143
+ runs-on: ${{ matrix.os }}
144
+ steps:
145
+ - uses: actions/checkout@v4
146
+
147
+ - uses: ruby/setup-ruby@v1
148
+ with:
149
+ ruby-version: "3.4"
150
+ bundler-cache: true
151
+
152
+ - name: Fetch docker buildx layer cache
153
+ uses: actions/cache@v4
154
+ with:
155
+ path: tmp/build-cache-${{ runner.arch }}
156
+ key: ${{ runner.os }}-on-${{ runner.arch }}-x86-linux-musl-${{ github.sha }}
157
+ restore-keys: |
158
+ ${{ runner.os }}-on-${{ runner.arch }}-x86-linux-musl
159
+ ${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc
160
+ enableCrossOsArchive: true
161
+ - name: Build the image layers x86-linux-musl on ${{ runner.arch }}
162
+ env:
163
+ RCD_TASK_DEPENDENCIES: "false"
164
+ run: |
165
+ # Change docker to a cache-able driver
166
+ docker buildx create --driver docker-container --use
167
+ bundle exec rake build:common-63da253 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new"
168
+ - name: Update and prune docker buildx layer cache
169
+ run: |
170
+ rm -rf tmp/build-cache-${{ runner.arch }}
171
+ mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }}
172
+
173
+ x86_64-linux-musl:
174
+ name: "build x86_64-linux-musl ${{ matrix.os }}"
175
+ needs: common-7f790bc
176
+ strategy:
177
+ fail-fast: false
178
+ matrix:
179
+ os:
180
+ - ubuntu-latest
181
+ - ubuntu-24.04-arm
182
+ runs-on: ${{ matrix.os }}
183
+ steps:
184
+ - uses: actions/checkout@v4
185
+
186
+ - uses: ruby/setup-ruby@v1
187
+ with:
188
+ ruby-version: "3.4"
189
+ bundler-cache: true
190
+
191
+ - name: Fetch docker buildx layer cache
192
+ uses: actions/cache@v4
193
+ with:
194
+ path: tmp/build-cache-${{ runner.arch }}
195
+ key: ${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-musl-${{ github.sha }}
196
+ restore-keys: |
197
+ ${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-musl
198
+ ${{ runner.os }}-on-${{ runner.arch }}-common-7f790bc
199
+ enableCrossOsArchive: true
200
+ - name: Build the image layers x86_64-linux-musl on ${{ runner.arch }}
201
+ env:
202
+ RCD_TASK_DEPENDENCIES: "false"
203
+ run: |
204
+ # Change docker to a cache-able driver
205
+ docker buildx create --driver docker-container --use
206
+ bundle exec rake build:common-dc7239b RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new"
207
+ - name: Update and prune docker buildx layer cache
208
+ run: |
209
+ rm -rf tmp/build-cache-${{ runner.arch }}
210
+ mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }}
211
+
212
+ arm64-darwin:
213
+ name: "build arm64-darwin ${{ matrix.os }}"
214
+ needs: common-d1f4370
215
+ strategy:
216
+ fail-fast: false
217
+ matrix:
218
+ os:
219
+ - ubuntu-latest
220
+ - ubuntu-24.04-arm
221
+ runs-on: ${{ matrix.os }}
222
+ steps:
223
+ - uses: actions/checkout@v4
224
+
225
+ - uses: ruby/setup-ruby@v1
226
+ with:
227
+ ruby-version: "3.4"
228
+ bundler-cache: true
229
+
230
+ - name: Fetch docker buildx layer cache
231
+ uses: actions/cache@v4
232
+ with:
233
+ path: tmp/build-cache-${{ runner.arch }}
234
+ key: ${{ runner.os }}-on-${{ runner.arch }}-arm64-darwin-${{ github.sha }}
235
+ restore-keys: |
236
+ ${{ runner.os }}-on-${{ runner.arch }}-arm64-darwin
237
+ ${{ runner.os }}-on-${{ runner.arch }}-common-d1f4370
238
+ enableCrossOsArchive: true
239
+ - name: Build the image layers arm64-darwin on ${{ runner.arch }}
240
+ env:
241
+ RCD_TASK_DEPENDENCIES: "false"
242
+ run: |
243
+ # Change docker to a cache-able driver
244
+ docker buildx create --driver docker-container --use
245
+ bundle exec rake build:common-2829589 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new"
246
+ - name: Update and prune docker buildx layer cache
247
+ run: |
248
+ rm -rf tmp/build-cache-${{ runner.arch }}
249
+ mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }}
250
+
251
+ common-d1f4370:
252
+ name: "build common-d1f4370 ${{ matrix.os }}"
253
+ needs: common-8c26987
254
+ strategy:
255
+ fail-fast: false
256
+ matrix:
257
+ os:
258
+ - ubuntu-latest
259
+ - ubuntu-24.04-arm
260
+ runs-on: ${{ matrix.os }}
261
+ steps:
262
+ - uses: actions/checkout@v4
263
+
264
+ - uses: ruby/setup-ruby@v1
265
+ with:
266
+ ruby-version: "3.4"
267
+ bundler-cache: true
268
+
269
+ - name: Fetch docker buildx layer cache
270
+ uses: actions/cache@v4
271
+ with:
272
+ path: tmp/build-cache-${{ runner.arch }}
273
+ key: ${{ runner.os }}-on-${{ runner.arch }}-common-d1f4370-${{ github.sha }}
274
+ restore-keys: |
275
+ ${{ runner.os }}-on-${{ runner.arch }}-common-d1f4370
276
+ ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987
277
+ enableCrossOsArchive: true
278
+ - name: Build the image layers common-d1f4370 on ${{ runner.arch }}
279
+ env:
280
+ RCD_TASK_DEPENDENCIES: "false"
281
+ run: |
282
+ # Change docker to a cache-able driver
283
+ docker buildx create --driver docker-container --use
284
+ bundle exec rake build:common-d1f4370 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new"
285
+ - name: Update and prune docker buildx layer cache
286
+ run: |
287
+ rm -rf tmp/build-cache-${{ runner.arch }}
288
+ mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }}
289
+
290
+ x86_64-darwin:
291
+ name: "build x86_64-darwin ${{ matrix.os }}"
292
+ needs: common-d1f4370
293
+ strategy:
294
+ fail-fast: false
295
+ matrix:
296
+ os:
297
+ - ubuntu-latest
298
+ - ubuntu-24.04-arm
299
+ runs-on: ${{ matrix.os }}
300
+ steps:
301
+ - uses: actions/checkout@v4
302
+
303
+ - uses: ruby/setup-ruby@v1
304
+ with:
305
+ ruby-version: "3.4"
306
+ bundler-cache: true
307
+
308
+ - name: Fetch docker buildx layer cache
309
+ uses: actions/cache@v4
310
+ with:
311
+ path: tmp/build-cache-${{ runner.arch }}
312
+ key: ${{ runner.os }}-on-${{ runner.arch }}-x86_64-darwin-${{ github.sha }}
313
+ restore-keys: |
314
+ ${{ runner.os }}-on-${{ runner.arch }}-x86_64-darwin
315
+ ${{ runner.os }}-on-${{ runner.arch }}-common-d1f4370
316
+ enableCrossOsArchive: true
317
+ - name: Build the image layers x86_64-darwin on ${{ runner.arch }}
318
+ env:
319
+ RCD_TASK_DEPENDENCIES: "false"
320
+ run: |
321
+ # Change docker to a cache-able driver
322
+ docker buildx create --driver docker-container --use
323
+ bundle exec rake build:common-bc54075 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new"
324
+ - name: Update and prune docker buildx layer cache
325
+ run: |
326
+ rm -rf tmp/build-cache-${{ runner.arch }}
327
+ mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }}
328
+
329
+ aarch64-linux-gnu:
330
+ name: "build aarch64-linux-gnu ${{ matrix.os }}"
331
+ needs: common-8c26987
332
+ strategy:
333
+ fail-fast: false
334
+ matrix:
335
+ os:
336
+ - ubuntu-latest
337
+ - ubuntu-24.04-arm
338
+ runs-on: ${{ matrix.os }}
339
+ steps:
340
+ - uses: actions/checkout@v4
341
+
342
+ - uses: ruby/setup-ruby@v1
343
+ with:
344
+ ruby-version: "3.4"
345
+ bundler-cache: true
346
+
347
+ - name: Fetch docker buildx layer cache
348
+ uses: actions/cache@v4
349
+ with:
350
+ path: tmp/build-cache-${{ runner.arch }}
351
+ key: ${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-gnu-${{ github.sha }}
352
+ restore-keys: |
353
+ ${{ runner.os }}-on-${{ runner.arch }}-aarch64-linux-gnu
354
+ ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987
355
+ enableCrossOsArchive: true
356
+ - name: Build the image layers aarch64-linux-gnu on ${{ runner.arch }}
357
+ env:
358
+ RCD_TASK_DEPENDENCIES: "false"
359
+ run: |
360
+ # Change docker to a cache-able driver
361
+ docker buildx create --driver docker-container --use
362
+ bundle exec rake build:common-b45d14a RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new"
363
+ - name: Update and prune docker buildx layer cache
364
+ run: |
365
+ rm -rf tmp/build-cache-${{ runner.arch }}
366
+ mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }}
367
+
368
+ common-8c26987:
369
+ name: "build common-8c26987 ${{ matrix.os }}"
370
+ needs: common-8a6d861
371
+ strategy:
372
+ fail-fast: false
373
+ matrix:
374
+ os:
375
+ - ubuntu-latest
376
+ - ubuntu-24.04-arm
377
+ runs-on: ${{ matrix.os }}
378
+ steps:
379
+ - uses: actions/checkout@v4
380
+
381
+ - uses: ruby/setup-ruby@v1
382
+ with:
383
+ ruby-version: "3.4"
384
+ bundler-cache: true
385
+
386
+ - name: Fetch docker buildx layer cache
387
+ uses: actions/cache@v4
388
+ with:
389
+ path: tmp/build-cache-${{ runner.arch }}
390
+ key: ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987-${{ github.sha }}
391
+ restore-keys: |
392
+ ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987
393
+ ${{ runner.os }}-on-${{ runner.arch }}-common-8a6d861
394
+ enableCrossOsArchive: true
395
+ - name: Build the image layers common-8c26987 on ${{ runner.arch }}
396
+ env:
397
+ RCD_TASK_DEPENDENCIES: "false"
398
+ run: |
399
+ # Change docker to a cache-able driver
400
+ docker buildx create --driver docker-container --use
401
+ bundle exec rake build:common-8c26987 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new"
402
+ - name: Update and prune docker buildx layer cache
403
+ run: |
404
+ rm -rf tmp/build-cache-${{ runner.arch }}
405
+ mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }}
406
+
407
+ aarch64-mingw-ucrt:
408
+ name: "build aarch64-mingw-ucrt ${{ matrix.os }}"
409
+ needs: common-8c26987
410
+ strategy:
411
+ fail-fast: false
412
+ matrix:
413
+ os:
414
+ - ubuntu-latest
415
+ - ubuntu-24.04-arm
416
+ runs-on: ${{ matrix.os }}
417
+ steps:
418
+ - uses: actions/checkout@v4
419
+
420
+ - uses: ruby/setup-ruby@v1
421
+ with:
422
+ ruby-version: "3.4"
423
+ bundler-cache: true
424
+
425
+ - name: Fetch docker buildx layer cache
426
+ uses: actions/cache@v4
427
+ with:
428
+ path: tmp/build-cache-${{ runner.arch }}
429
+ key: ${{ runner.os }}-on-${{ runner.arch }}-aarch64-mingw-ucrt-${{ github.sha }}
430
+ restore-keys: |
431
+ ${{ runner.os }}-on-${{ runner.arch }}-aarch64-mingw-ucrt
432
+ ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987
433
+ enableCrossOsArchive: true
434
+ - name: Build the image layers aarch64-mingw-ucrt on ${{ runner.arch }}
435
+ env:
436
+ RCD_TASK_DEPENDENCIES: "false"
437
+ run: |
438
+ # Change docker to a cache-able driver
439
+ docker buildx create --driver docker-container --use
440
+ bundle exec rake build:common-2378386 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new"
441
+ - name: Update and prune docker buildx layer cache
442
+ run: |
443
+ rm -rf tmp/build-cache-${{ runner.arch }}
444
+ mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }}
445
+
446
+ arm-linux-gnu:
447
+ name: "build arm-linux-gnu ${{ matrix.os }}"
448
+ needs: common-8c26987
449
+ strategy:
450
+ fail-fast: false
451
+ matrix:
452
+ os:
453
+ - ubuntu-latest
454
+ - ubuntu-24.04-arm
455
+ runs-on: ${{ matrix.os }}
456
+ steps:
457
+ - uses: actions/checkout@v4
458
+
459
+ - uses: ruby/setup-ruby@v1
460
+ with:
461
+ ruby-version: "3.4"
462
+ bundler-cache: true
463
+
464
+ - name: Fetch docker buildx layer cache
465
+ uses: actions/cache@v4
466
+ with:
467
+ path: tmp/build-cache-${{ runner.arch }}
468
+ key: ${{ runner.os }}-on-${{ runner.arch }}-arm-linux-gnu-${{ github.sha }}
469
+ restore-keys: |
470
+ ${{ runner.os }}-on-${{ runner.arch }}-arm-linux-gnu
471
+ ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987
472
+ enableCrossOsArchive: true
473
+ - name: Build the image layers arm-linux-gnu on ${{ runner.arch }}
474
+ env:
475
+ RCD_TASK_DEPENDENCIES: "false"
476
+ run: |
477
+ # Change docker to a cache-able driver
478
+ docker buildx create --driver docker-container --use
479
+ bundle exec rake build:common-8fd4771 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new"
480
+ - name: Update and prune docker buildx layer cache
481
+ run: |
482
+ rm -rf tmp/build-cache-${{ runner.arch }}
483
+ mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }}
484
+
485
+ x64-mingw-ucrt:
486
+ name: "build x64-mingw-ucrt ${{ matrix.os }}"
487
+ needs: common-8c26987
488
+ strategy:
489
+ fail-fast: false
490
+ matrix:
491
+ os:
492
+ - ubuntu-latest
493
+ - ubuntu-24.04-arm
494
+ runs-on: ${{ matrix.os }}
495
+ steps:
496
+ - uses: actions/checkout@v4
497
+
498
+ - uses: ruby/setup-ruby@v1
499
+ with:
500
+ ruby-version: "3.4"
501
+ bundler-cache: true
502
+
503
+ - name: Fetch docker buildx layer cache
504
+ uses: actions/cache@v4
505
+ with:
506
+ path: tmp/build-cache-${{ runner.arch }}
507
+ key: ${{ runner.os }}-on-${{ runner.arch }}-x64-mingw-ucrt-${{ github.sha }}
508
+ restore-keys: |
509
+ ${{ runner.os }}-on-${{ runner.arch }}-x64-mingw-ucrt
510
+ ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987
511
+ enableCrossOsArchive: true
512
+ - name: Build the image layers x64-mingw-ucrt on ${{ runner.arch }}
513
+ env:
514
+ RCD_TASK_DEPENDENCIES: "false"
515
+ run: |
516
+ # Change docker to a cache-able driver
517
+ docker buildx create --driver docker-container --use
518
+ bundle exec rake build:common-fad6604 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new"
519
+ - name: Update and prune docker buildx layer cache
520
+ run: |
521
+ rm -rf tmp/build-cache-${{ runner.arch }}
522
+ mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }}
523
+
524
+ x64-mingw32:
525
+ name: "build x64-mingw32 ${{ matrix.os }}"
526
+ needs: common-8c26987
527
+ strategy:
528
+ fail-fast: false
529
+ matrix:
530
+ os:
531
+ - ubuntu-latest
532
+ - ubuntu-24.04-arm
533
+ runs-on: ${{ matrix.os }}
534
+ steps:
535
+ - uses: actions/checkout@v4
536
+
537
+ - uses: ruby/setup-ruby@v1
538
+ with:
539
+ ruby-version: "3.4"
540
+ bundler-cache: true
541
+
542
+ - name: Fetch docker buildx layer cache
543
+ uses: actions/cache@v4
544
+ with:
545
+ path: tmp/build-cache-${{ runner.arch }}
546
+ key: ${{ runner.os }}-on-${{ runner.arch }}-x64-mingw32-${{ github.sha }}
547
+ restore-keys: |
548
+ ${{ runner.os }}-on-${{ runner.arch }}-x64-mingw32
549
+ ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987
550
+ enableCrossOsArchive: true
551
+ - name: Build the image layers x64-mingw32 on ${{ runner.arch }}
552
+ env:
553
+ RCD_TASK_DEPENDENCIES: "false"
554
+ run: |
555
+ # Change docker to a cache-able driver
556
+ docker buildx create --driver docker-container --use
557
+ bundle exec rake build:common-c435c44 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new"
558
+ - name: Update and prune docker buildx layer cache
559
+ run: |
560
+ rm -rf tmp/build-cache-${{ runner.arch }}
561
+ mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }}
562
+
563
+ x86-linux-gnu:
564
+ name: "build x86-linux-gnu ${{ matrix.os }}"
565
+ needs: common-8c26987
566
+ strategy:
567
+ fail-fast: false
568
+ matrix:
569
+ os:
570
+ - ubuntu-latest
571
+ - ubuntu-24.04-arm
572
+ runs-on: ${{ matrix.os }}
573
+ steps:
574
+ - uses: actions/checkout@v4
575
+
576
+ - uses: ruby/setup-ruby@v1
577
+ with:
578
+ ruby-version: "3.4"
579
+ bundler-cache: true
580
+
581
+ - name: Fetch docker buildx layer cache
582
+ uses: actions/cache@v4
583
+ with:
584
+ path: tmp/build-cache-${{ runner.arch }}
585
+ key: ${{ runner.os }}-on-${{ runner.arch }}-x86-linux-gnu-${{ github.sha }}
586
+ restore-keys: |
587
+ ${{ runner.os }}-on-${{ runner.arch }}-x86-linux-gnu
588
+ ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987
589
+ enableCrossOsArchive: true
590
+ - name: Build the image layers x86-linux-gnu on ${{ runner.arch }}
591
+ env:
592
+ RCD_TASK_DEPENDENCIES: "false"
593
+ run: |
594
+ # Change docker to a cache-able driver
595
+ docker buildx create --driver docker-container --use
596
+ bundle exec rake build:common-cda3746 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new"
597
+ - name: Update and prune docker buildx layer cache
598
+ run: |
599
+ rm -rf tmp/build-cache-${{ runner.arch }}
600
+ mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }}
601
+
602
+ x86-mingw32:
603
+ name: "build x86-mingw32 ${{ matrix.os }}"
604
+ needs: common-8c26987
605
+ strategy:
606
+ fail-fast: false
607
+ matrix:
608
+ os:
609
+ - ubuntu-latest
610
+ - ubuntu-24.04-arm
611
+ runs-on: ${{ matrix.os }}
612
+ steps:
613
+ - uses: actions/checkout@v4
614
+
615
+ - uses: ruby/setup-ruby@v1
616
+ with:
617
+ ruby-version: "3.4"
618
+ bundler-cache: true
619
+
620
+ - name: Fetch docker buildx layer cache
621
+ uses: actions/cache@v4
622
+ with:
623
+ path: tmp/build-cache-${{ runner.arch }}
624
+ key: ${{ runner.os }}-on-${{ runner.arch }}-x86-mingw32-${{ github.sha }}
625
+ restore-keys: |
626
+ ${{ runner.os }}-on-${{ runner.arch }}-x86-mingw32
627
+ ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987
628
+ enableCrossOsArchive: true
629
+ - name: Build the image layers x86-mingw32 on ${{ runner.arch }}
630
+ env:
631
+ RCD_TASK_DEPENDENCIES: "false"
632
+ run: |
633
+ # Change docker to a cache-able driver
634
+ docker buildx create --driver docker-container --use
635
+ bundle exec rake build:common-697f3ca RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new"
636
+ - name: Update and prune docker buildx layer cache
637
+ run: |
638
+ rm -rf tmp/build-cache-${{ runner.arch }}
639
+ mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }}
640
+
641
+ x86_64-linux-gnu:
642
+ name: "build x86_64-linux-gnu ${{ matrix.os }}"
643
+ needs: common-8c26987
644
+ strategy:
645
+ fail-fast: false
646
+ matrix:
647
+ os:
648
+ - ubuntu-latest
649
+ - ubuntu-24.04-arm
650
+ runs-on: ${{ matrix.os }}
651
+ steps:
652
+ - uses: actions/checkout@v4
653
+
654
+ - uses: ruby/setup-ruby@v1
655
+ with:
656
+ ruby-version: "3.4"
657
+ bundler-cache: true
658
+
659
+ - name: Fetch docker buildx layer cache
660
+ uses: actions/cache@v4
661
+ with:
662
+ path: tmp/build-cache-${{ runner.arch }}
663
+ key: ${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-gnu-${{ github.sha }}
664
+ restore-keys: |
665
+ ${{ runner.os }}-on-${{ runner.arch }}-x86_64-linux-gnu
666
+ ${{ runner.os }}-on-${{ runner.arch }}-common-8c26987
667
+ enableCrossOsArchive: true
668
+ - name: Build the image layers x86_64-linux-gnu on ${{ runner.arch }}
669
+ env:
670
+ RCD_TASK_DEPENDENCIES: "false"
671
+ run: |
672
+ # Change docker to a cache-able driver
673
+ docker buildx create --driver docker-container --use
674
+ bundle exec rake build:common-7b065f9 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new"
675
+ - name: Update and prune docker buildx layer cache
676
+ run: |
677
+ rm -rf tmp/build-cache-${{ runner.arch }}
678
+ mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }}
679
+
680
+ common-8a6d861:
681
+ name: "build common-8a6d861 ${{ matrix.os }}"
682
+
683
+ strategy:
684
+ fail-fast: false
685
+ matrix:
686
+ os:
687
+ - ubuntu-latest
688
+ - ubuntu-24.04-arm
689
+ runs-on: ${{ matrix.os }}
690
+ steps:
691
+ - uses: actions/checkout@v4
692
+
693
+ - uses: ruby/setup-ruby@v1
694
+ with:
695
+ ruby-version: "3.4"
696
+ bundler-cache: true
697
+
698
+ - name: Fetch docker buildx layer cache
699
+ uses: actions/cache@v4
700
+ with:
701
+ path: tmp/build-cache-${{ runner.arch }}
702
+ key: ${{ runner.os }}-on-${{ runner.arch }}-common-8a6d861-${{ github.sha }}
703
+ restore-keys: |
704
+ ${{ runner.os }}-on-${{ runner.arch }}-common-8a6d861
705
+ ${{ runner.os }}-on-${{ runner.arch }}-
706
+ enableCrossOsArchive: true
707
+ - name: Build the image layers common-8a6d861 on ${{ runner.arch }}
708
+ env:
709
+ RCD_TASK_DEPENDENCIES: "false"
710
+ run: |
711
+ # Change docker to a cache-able driver
712
+ docker buildx create --driver docker-container --use
713
+ bundle exec rake build:common-8a6d861 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new"
714
+ - name: Update and prune docker buildx layer cache
715
+ run: |
716
+ rm -rf tmp/build-cache-${{ runner.arch }}
717
+ mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }}
718
+
719
+ jruby:
720
+ name: "build jruby ${{ matrix.os }}"
721
+ needs: common-8a6d861
722
+ strategy:
723
+ fail-fast: false
724
+ matrix:
725
+ os:
726
+ - ubuntu-latest
727
+ - ubuntu-24.04-arm
728
+ runs-on: ${{ matrix.os }}
729
+ steps:
730
+ - uses: actions/checkout@v4
731
+
732
+ - uses: ruby/setup-ruby@v1
733
+ with:
734
+ ruby-version: "3.4"
735
+ bundler-cache: true
736
+
737
+ - name: Fetch docker buildx layer cache
738
+ uses: actions/cache@v4
739
+ with:
740
+ path: tmp/build-cache-${{ runner.arch }}
741
+ key: ${{ runner.os }}-on-${{ runner.arch }}-jruby-${{ github.sha }}
742
+ restore-keys: |
743
+ ${{ runner.os }}-on-${{ runner.arch }}-jruby
744
+ ${{ runner.os }}-on-${{ runner.arch }}-common-8a6d861
745
+ enableCrossOsArchive: true
746
+ - name: Build the image layers jruby on ${{ runner.arch }}
747
+ env:
748
+ RCD_TASK_DEPENDENCIES: "false"
749
+ run: |
750
+ # Change docker to a cache-able driver
751
+ docker buildx create --driver docker-container --use
752
+ bundle exec rake build:common-58bf949 RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-${{ runner.arch }} --cache-to=type=local,compression=zstd,dest=tmp/build-cache-new"
753
+ - name: Update and prune docker buildx layer cache
754
+ run: |
755
+ rm -rf tmp/build-cache-${{ runner.arch }}
756
+ mv tmp/build-cache-new tmp/build-cache-${{ runner.arch }}
757
+
758
+
759
+ push:
760
+ name: push
761
+ needs: [aarch64-linux-gnu,aarch64-linux-musl,aarch64-mingw-ucrt,arm-linux-gnu,arm-linux-musl,arm64-darwin,x64-mingw-ucrt,x64-mingw32,x86-linux-gnu,x86-linux-musl,x86-mingw32,x86_64-darwin,x86_64-linux-gnu,x86_64-linux-musl,jruby]
12
762
  strategy:
13
763
  fail-fast: false
14
764
  matrix:
15
765
  platform:
766
+
16
767
  - aarch64-linux-gnu
768
+
17
769
  - aarch64-linux-musl
770
+
771
+ - aarch64-mingw-ucrt
772
+
18
773
  - arm-linux-gnu
774
+
19
775
  - arm-linux-musl
776
+
20
777
  - arm64-darwin
21
- - jruby
778
+
22
779
  - x64-mingw-ucrt
780
+
23
781
  - x64-mingw32
782
+
24
783
  - x86-linux-gnu
784
+
25
785
  - x86-linux-musl
786
+
26
787
  - x86-mingw32
788
+
27
789
  - x86_64-darwin
790
+
28
791
  - x86_64-linux-gnu
792
+
29
793
  - x86_64-linux-musl
30
- runs-on: ubuntu-latest
794
+
795
+ - jruby
796
+
797
+ runs-on: ubuntu-24.04-arm
31
798
  steps:
32
799
  - uses: actions/checkout@v4
33
- - name: Use cache from primary pipeline
34
- uses: actions/cache@v4
800
+
801
+ - name: Use X64 cache from tree pipeline of ${{ matrix.platform }}
802
+ uses: actions/cache/restore@v4
35
803
  with:
36
- path: tmp/build-cache
37
- key: ${{runner.os}}-${{matrix.platform}}-buildx-${{github.sha}}
38
- restore-keys: |
39
- ${{runner.os}}-${{matrix.platform}}-buildx
804
+ path: tmp/build-cache-X64
805
+ key: ${{ runner.os }}-on-X64-${{ matrix.platform }}-${{ github.sha }}
806
+ restore-keys: ${{ runner.os }}-on-X64-${{ matrix.platform }}
807
+ enableCrossOsArchive: true
808
+ - name: Use ARM64 cache from tree pipeline of ${{ matrix.platform }}
809
+ uses: actions/cache/restore@v4
810
+ with:
811
+ path: tmp/build-cache-ARM64
812
+ key: ${{ runner.os }}-on-ARM64-${{ matrix.platform }}-${{ github.sha }}
813
+ restore-keys: ${{ runner.os }}-on-ARM64-${{ matrix.platform }}
814
+ enableCrossOsArchive: true
815
+ fail-on-cache-miss: true
816
+
40
817
  - uses: ruby/setup-ruby@v1
41
818
  with:
42
- ruby-version: "3.3"
819
+ ruby-version: "3.4"
43
820
  bundler-cache: true
44
- - name: Generate docker image names
45
- id: rcd_config
46
- run: |
47
- bundle exec ruby -e ' \
48
- require "rake_compiler_dock"; \
49
- print "image_name="; \
50
- puts RakeCompilerDock::Starter.container_image_name(:platform => %q(${{matrix.platform}})); \
51
- print "snapshot_name="; \
52
- puts RakeCompilerDock::Starter.container_image_name(:platform => %q(${{matrix.platform}}), :version => %q(snapshot)); \
53
- if %q(${{matrix.platform}}).end_with?("-gnu"); \
54
- print "generic_linux_snapshot_name="; \
55
- puts RakeCompilerDock::Starter.container_image_name(:platform => %q(${{matrix.platform}}), :version => %q(snapshot)).chomp("-gnu"); \
56
- end \
57
- ' | tee -a $GITHUB_OUTPUT
58
- - name: Build docker image
59
- env:
60
- RCD_DOCKER_BUILD: docker buildx build --cache-from=type=local,src=tmp/build-cache --cache-to=type=local,dest=tmp/build-cache-new --load
61
- run: |
62
- docker buildx create --driver docker-container --use
63
- bundle exec rake build:${{matrix.platform}}
64
- # move build cache and remove outdated layers
65
- rm -rf tmp/build-cache
66
- mv tmp/build-cache-new tmp/build-cache
67
821
  - uses: docker/login-action@v3
68
822
  with:
69
823
  registry: ghcr.io
70
824
  username: ${{github.actor}}
71
825
  password: ${{secrets.GITHUB_TOKEN}}
72
- - name: Push the docker image
73
- run: |
74
- docker images
75
- docker tag ${{steps.rcd_config.outputs.image_name}} ${{steps.rcd_config.outputs.snapshot_name}}
76
- docker push ${{steps.rcd_config.outputs.snapshot_name}}
77
- - name: Push a generic linux image
78
- if: ${{ steps.rcd_config.outputs.generic_linux_snapshot_name }}
826
+ - name: Use cache and push docker image
827
+ env:
828
+ RCD_IMAGE_VERSION: snapshot
829
+ RCD_DOCKER_BUILD: docker buildx build --cache-from=type=local,compression=zstd,src=tmp/build-cache-X64 --cache-from=type=local,compression=zstd,src=tmp/build-cache-ARM64
830
+ RCD_TASK_DEPENDENCIES: "false"
79
831
  run: |
80
- docker tag ${{steps.rcd_config.outputs.image_name}} ${{steps.rcd_config.outputs.generic_linux_snapshot_name}}
81
- docker push ${{steps.rcd_config.outputs.generic_linux_snapshot_name}}
832
+ docker buildx create --driver docker-container --use
833
+ bundle exec rake release:${{ matrix.platform }}