Skip to content

Commit fcc1d6d

Browse files
committed
Normalized build time with 16 jobs
1 parent 634742a commit fcc1d6d

2 files changed

Lines changed: 219 additions & 40 deletions

File tree

.github/workflows/build.yml

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,21 @@ jobs:
1818
matrix:
1919
target:
2020
- ruby-0.x-2.0
21-
- ruby-1.2-1.9
22-
- ruby-2.1-2.4
23-
- ruby-2.5-2.7
24-
- ruby-3.0-3.2
25-
- ruby-3.3-4.0
21+
- ruby-1.2-1.8.7
22+
- ruby-1.9
23+
- ruby-2.1
24+
- ruby-2.2
25+
- ruby-2.3
26+
- ruby-2.4
27+
- ruby-2.5
28+
- ruby-2.6
29+
- ruby-2.7
30+
- ruby-3.0
31+
- ruby-3.1
32+
- ruby-3.2
33+
- ruby-3.3
34+
- ruby-3.4
35+
- ruby-3.5-4.0
2636
steps:
2737
- uses: actions/checkout@v4
2838

@@ -64,8 +74,18 @@ jobs:
6474
tags: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
6575
cache-from: |
6676
type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:cache-ruby-0.x-2.0
67-
type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:cache-ruby-1.2-1.9
68-
type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:cache-ruby-2.1-2.4
69-
type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:cache-ruby-2.5-2.7
70-
type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:cache-ruby-3.0-3.2
71-
type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:cache-ruby-3.3-4.0
77+
type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:cache-ruby-1.2-1.8.7
78+
type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:cache-ruby-1.9
79+
type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:cache-ruby-2.1
80+
type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:cache-ruby-2.2
81+
type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:cache-ruby-2.3
82+
type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:cache-ruby-2.4
83+
type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:cache-ruby-2.5
84+
type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:cache-ruby-2.6
85+
type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:cache-ruby-2.7
86+
type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:cache-ruby-3.0
87+
type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:cache-ruby-3.1
88+
type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:cache-ruby-3.2
89+
type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:cache-ruby-3.3
90+
type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:cache-ruby-3.4
91+
type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:cache-ruby-3.5-4.0

Dockerfile

Lines changed: 189 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ COPY patch /all-ruby/patch/
4141
RUN rake setup_build
4242

4343
# =============================================================================
44-
# Ruby 0.x, 1.0, 1.1, 1.8.0-1.8.5, 2.0.0 on Debian Buster
44+
# Ruby 0.x-2.0.0 on Debian Buster
4545
# =============================================================================
4646
FROM builder-buster AS ruby-0.x-2.0
4747
ARG j=numcpu_plus_alpha
@@ -88,13 +88,26 @@ COPY patch /all-ruby/patch/
8888
RUN rake setup_build
8989

9090
# =============================================================================
91-
# Ruby 1.2-1.8.7, 1.9.x
91+
# Ruby 1.2-1.8.7
9292
# =============================================================================
93-
FROM builder-bullseye AS ruby-1.2-1.9
93+
FROM builder-bullseye AS ruby-1.2-1.8.7
9494
ARG j=numcpu_plus_alpha
9595

96-
COPY versions/1.2* versions/1.3* versions/1.4* versions/1.6* versions/1.8.6* versions/1.8.7* versions/1.9* /all-ruby/versions/
96+
COPY versions/1.2* versions/1.3* versions/1.4* versions/1.6* versions/1.8.6* versions/1.8.7* /all-ruby/versions/
9797
RUN rake -j ${j} all-1.2 all-1.3 all-1.4 all-1.6 all-1.8.6 all-1.8.7
98+
99+
RUN rm -rf Rakefile versions/ patch/ DIST build/*/log build/*/ruby*/ \
100+
build/*/man build/*/share/man build/*/share/doc build/*/share/ri && \
101+
rm -f build/*/lib/libruby-static.a build/*/bin/gcc build/*/bin/cc
102+
RUN find /build-all-ruby -type f \( -name ruby -o -name '*.so' \) -exec sh -c 'file $1 | grep -q "not stripped"' - '{}' \; -print0 | xargs -0 strip
103+
104+
# =============================================================================
105+
# Ruby 1.9.x
106+
# =============================================================================
107+
FROM builder-bullseye AS ruby-1.9
108+
ARG j=numcpu_plus_alpha
109+
110+
COPY versions/1.9* /all-ruby/versions/
98111
RUN rake -j ${j} all-1.9.0 all-1.9.1 all-1.9.2
99112
RUN rake -j ${j} all-1.9.3
100113

@@ -104,55 +117,181 @@ RUN rm -rf Rakefile versions/ patch/ DIST build/*/log build/*/ruby*/ \
104117
RUN find /build-all-ruby -type f \( -name ruby -o -name '*.so' \) -exec sh -c 'file $1 | grep -q "not stripped"' - '{}' \; -print0 | xargs -0 strip
105118

106119
# =============================================================================
107-
# Ruby 2.1-2.4
120+
# Ruby 2.1
121+
# =============================================================================
122+
FROM builder-bullseye AS ruby-2.1
123+
ARG j=numcpu_plus_alpha
124+
125+
COPY versions/2.1* /all-ruby/versions/
126+
RUN rake -j ${j} all-2.1
127+
128+
RUN rm -rf Rakefile versions/ patch/ DIST build/*/log build/*/ruby*/ \
129+
build/*/man build/*/share/man build/*/share/doc build/*/share/ri && \
130+
rm -f build/*/lib/libruby-static.a build/*/bin/gcc build/*/bin/cc
131+
RUN find /build-all-ruby -type f \( -name ruby -o -name '*.so' \) -exec sh -c 'file $1 | grep -q "not stripped"' - '{}' \; -print0 | xargs -0 strip
132+
133+
# =============================================================================
134+
# Ruby 2.2
135+
# =============================================================================
136+
FROM builder-bullseye AS ruby-2.2
137+
ARG j=numcpu_plus_alpha
138+
139+
COPY versions/2.2* /all-ruby/versions/
140+
RUN rake -j ${j} all-2.2
141+
142+
RUN rm -rf Rakefile versions/ patch/ DIST build/*/log build/*/ruby*/ \
143+
build/*/man build/*/share/man build/*/share/doc build/*/share/ri && \
144+
rm -f build/*/lib/libruby-static.a build/*/bin/gcc build/*/bin/cc
145+
RUN find /build-all-ruby -type f \( -name ruby -o -name '*.so' \) -exec sh -c 'file $1 | grep -q "not stripped"' - '{}' \; -print0 | xargs -0 strip
146+
147+
# =============================================================================
148+
# Ruby 2.3
149+
# =============================================================================
150+
FROM builder-bullseye AS ruby-2.3
151+
ARG j=numcpu_plus_alpha
152+
153+
COPY versions/2.3* /all-ruby/versions/
154+
RUN rake -j ${j} all-2.3
155+
156+
RUN rm -rf Rakefile versions/ patch/ DIST build/*/log build/*/ruby*/ \
157+
build/*/man build/*/share/man build/*/share/doc build/*/share/ri && \
158+
rm -f build/*/lib/libruby-static.a build/*/bin/gcc build/*/bin/cc
159+
RUN find /build-all-ruby -type f \( -name ruby -o -name '*.so' \) -exec sh -c 'file $1 | grep -q "not stripped"' - '{}' \; -print0 | xargs -0 strip
160+
161+
# =============================================================================
162+
# Ruby 2.4
163+
# =============================================================================
164+
FROM builder-bullseye AS ruby-2.4
165+
ARG j=numcpu_plus_alpha
166+
167+
COPY versions/2.4* /all-ruby/versions/
168+
RUN rake -j ${j} all-2.4
169+
170+
RUN rm -rf Rakefile versions/ patch/ DIST build/*/log build/*/ruby*/ \
171+
build/*/man build/*/share/man build/*/share/doc build/*/share/ri && \
172+
rm -f build/*/lib/libruby-static.a build/*/bin/gcc build/*/bin/cc
173+
RUN find /build-all-ruby -type f \( -name ruby -o -name '*.so' \) -exec sh -c 'file $1 | grep -q "not stripped"' - '{}' \; -print0 | xargs -0 strip
174+
175+
# =============================================================================
176+
# Ruby 2.5
177+
# =============================================================================
178+
FROM builder-bullseye AS ruby-2.5
179+
ARG j=numcpu_plus_alpha
180+
181+
COPY versions/2.5* /all-ruby/versions/
182+
RUN rake -j ${j} all-2.5
183+
184+
RUN rm -rf Rakefile versions/ patch/ DIST build/*/log build/*/ruby*/ \
185+
build/*/man build/*/share/man build/*/share/doc build/*/share/ri && \
186+
rm -f build/*/lib/libruby-static.a build/*/bin/gcc build/*/bin/cc
187+
RUN find /build-all-ruby -type f \( -name ruby -o -name '*.so' \) -exec sh -c 'file $1 | grep -q "not stripped"' - '{}' \; -print0 | xargs -0 strip
188+
189+
# =============================================================================
190+
# Ruby 2.6
191+
# =============================================================================
192+
FROM builder-bullseye AS ruby-2.6
193+
ARG j=numcpu_plus_alpha
194+
195+
COPY versions/2.6* /all-ruby/versions/
196+
RUN rake -j ${j} all-2.6
197+
198+
RUN rm -rf Rakefile versions/ patch/ DIST build/*/log build/*/ruby*/ \
199+
build/*/man build/*/share/man build/*/share/doc build/*/share/ri && \
200+
rm -f build/*/lib/libruby-static.a build/*/bin/gcc build/*/bin/cc
201+
RUN find /build-all-ruby -type f \( -name ruby -o -name '*.so' \) -exec sh -c 'file $1 | grep -q "not stripped"' - '{}' \; -print0 | xargs -0 strip
202+
203+
# =============================================================================
204+
# Ruby 2.7
205+
# =============================================================================
206+
FROM builder-bullseye AS ruby-2.7
207+
ARG j=numcpu_plus_alpha
208+
209+
COPY versions/2.7* /all-ruby/versions/
210+
RUN rake -j ${j} all-2.7
211+
212+
RUN rm -rf Rakefile versions/ patch/ DIST build/*/log build/*/ruby*/ \
213+
build/*/man build/*/share/man build/*/share/doc build/*/share/ri && \
214+
rm -f build/*/lib/libruby-static.a build/*/bin/gcc build/*/bin/cc
215+
RUN find /build-all-ruby -type f \( -name ruby -o -name '*.so' \) -exec sh -c 'file $1 | grep -q "not stripped"' - '{}' \; -print0 | xargs -0 strip
216+
217+
# =============================================================================
218+
# Ruby 3.0
219+
# =============================================================================
220+
FROM builder-bullseye AS ruby-3.0
221+
ARG j=numcpu_plus_alpha
222+
223+
COPY versions/3.0* /all-ruby/versions/
224+
RUN rake -j ${j} all-3.0
225+
226+
RUN rm -rf Rakefile versions/ patch/ DIST build/*/log build/*/ruby*/ \
227+
build/*/man build/*/share/man build/*/share/doc build/*/share/ri && \
228+
rm -f build/*/lib/libruby-static.a build/*/bin/gcc build/*/bin/cc
229+
RUN find /build-all-ruby -type f \( -name ruby -o -name '*.so' \) -exec sh -c 'file $1 | grep -q "not stripped"' - '{}' \; -print0 | xargs -0 strip
230+
231+
# =============================================================================
232+
# Ruby 3.1
233+
# =============================================================================
234+
FROM builder-bullseye AS ruby-3.1
235+
ARG j=numcpu_plus_alpha
236+
237+
COPY versions/3.1* /all-ruby/versions/
238+
RUN rake -j ${j} all-3.1
239+
240+
RUN rm -rf Rakefile versions/ patch/ DIST build/*/log build/*/ruby*/ \
241+
build/*/man build/*/share/man build/*/share/doc build/*/share/ri && \
242+
rm -f build/*/lib/libruby-static.a build/*/bin/gcc build/*/bin/cc
243+
RUN find /build-all-ruby -type f \( -name ruby -o -name '*.so' \) -exec sh -c 'file $1 | grep -q "not stripped"' - '{}' \; -print0 | xargs -0 strip
244+
245+
# =============================================================================
246+
# Ruby 3.2
108247
# =============================================================================
109-
FROM builder-bullseye AS ruby-2.1-2.4
248+
FROM builder-bullseye AS ruby-3.2
110249
ARG j=numcpu_plus_alpha
111250

112-
COPY versions/2.1* versions/2.2* versions/2.3* versions/2.4* /all-ruby/versions/
113-
RUN rake -j ${j} all-2.1 all-2.2 all-2.3 all-2.4
251+
COPY versions/3.2* /all-ruby/versions/
252+
RUN rake -j ${j} all-3.2
114253

115254
RUN rm -rf Rakefile versions/ patch/ DIST build/*/log build/*/ruby*/ \
116255
build/*/man build/*/share/man build/*/share/doc build/*/share/ri && \
117256
rm -f build/*/lib/libruby-static.a build/*/bin/gcc build/*/bin/cc
118257
RUN find /build-all-ruby -type f \( -name ruby -o -name '*.so' \) -exec sh -c 'file $1 | grep -q "not stripped"' - '{}' \; -print0 | xargs -0 strip
119258

120259
# =============================================================================
121-
# Ruby 2.5-2.7
260+
# Ruby 3.3
122261
# =============================================================================
123-
FROM builder-bullseye AS ruby-2.5-2.7
262+
FROM builder-bullseye AS ruby-3.3
124263
ARG j=numcpu_plus_alpha
125264

126-
COPY versions/2.5* versions/2.6* versions/2.7* /all-ruby/versions/
127-
RUN rake -j ${j} all-2.5 all-2.6 all-2.7
265+
COPY versions/3.3* /all-ruby/versions/
266+
RUN rake -j ${j} all-3.3
128267

129268
RUN rm -rf Rakefile versions/ patch/ DIST build/*/log build/*/ruby*/ \
130269
build/*/man build/*/share/man build/*/share/doc build/*/share/ri && \
131270
rm -f build/*/lib/libruby-static.a build/*/bin/gcc build/*/bin/cc
132271
RUN find /build-all-ruby -type f \( -name ruby -o -name '*.so' \) -exec sh -c 'file $1 | grep -q "not stripped"' - '{}' \; -print0 | xargs -0 strip
133272

134273
# =============================================================================
135-
# Ruby 3.0-3.2
274+
# Ruby 3.4
136275
# =============================================================================
137-
FROM builder-bullseye AS ruby-3.0-3.2
276+
FROM builder-bullseye AS ruby-3.4
138277
ARG j=numcpu_plus_alpha
139278

140-
COPY versions/3.0* versions/3.1* versions/3.2* /all-ruby/versions/
141-
RUN rake -j ${j} all-3.0 all-3.1 all-3.2
279+
COPY versions/3.4* /all-ruby/versions/
280+
RUN rake -j ${j} all-3.4
142281

143282
RUN rm -rf Rakefile versions/ patch/ DIST build/*/log build/*/ruby*/ \
144283
build/*/man build/*/share/man build/*/share/doc build/*/share/ri && \
145284
rm -f build/*/lib/libruby-static.a build/*/bin/gcc build/*/bin/cc
146285
RUN find /build-all-ruby -type f \( -name ruby -o -name '*.so' \) -exec sh -c 'file $1 | grep -q "not stripped"' - '{}' \; -print0 | xargs -0 strip
147286

148287
# =============================================================================
149-
# Ruby 3.3-4.0
288+
# Ruby 3.5-4.0
150289
# =============================================================================
151-
FROM builder-bullseye AS ruby-3.3-4.0
290+
FROM builder-bullseye AS ruby-3.5-4.0
152291
ARG j=numcpu_plus_alpha
153292

154-
COPY versions/3.3* versions/3.4* versions/3.5* versions/4.0* /all-ruby/versions/
155-
RUN rake -j ${j} all-3.3 all-3.4 3.5.0-preview1 all-4.0
293+
COPY versions/3.5* versions/4.0* /all-ruby/versions/
294+
RUN rake -j ${j} 3.5.0-preview1 all-4.0
156295

157296
RUN rm -rf Rakefile versions/ patch/ DIST build/*/log build/*/ruby*/ \
158297
build/*/man build/*/share/man build/*/share/doc build/*/share/ri && \
@@ -166,11 +305,21 @@ RUN find /build-all-ruby -type f \( -name ruby -o -name '*.so' \) -exec sh -c 'f
166305
FROM builder-bullseye AS aggregator
167306

168307
COPY --from=ruby-0.x-2.0 /build-all-ruby/ /build-all-ruby/
169-
COPY --from=ruby-1.2-1.9 /build-all-ruby/ /build-all-ruby/
170-
COPY --from=ruby-2.1-2.4 /build-all-ruby/ /build-all-ruby/
171-
COPY --from=ruby-2.5-2.7 /build-all-ruby/ /build-all-ruby/
172-
COPY --from=ruby-3.0-3.2 /build-all-ruby/ /build-all-ruby/
173-
COPY --from=ruby-3.3-4.0 /build-all-ruby/ /build-all-ruby/
308+
COPY --from=ruby-1.2-1.8.7 /build-all-ruby/ /build-all-ruby/
309+
COPY --from=ruby-1.9 /build-all-ruby/ /build-all-ruby/
310+
COPY --from=ruby-2.1 /build-all-ruby/ /build-all-ruby/
311+
COPY --from=ruby-2.2 /build-all-ruby/ /build-all-ruby/
312+
COPY --from=ruby-2.3 /build-all-ruby/ /build-all-ruby/
313+
COPY --from=ruby-2.4 /build-all-ruby/ /build-all-ruby/
314+
COPY --from=ruby-2.5 /build-all-ruby/ /build-all-ruby/
315+
COPY --from=ruby-2.6 /build-all-ruby/ /build-all-ruby/
316+
COPY --from=ruby-2.7 /build-all-ruby/ /build-all-ruby/
317+
COPY --from=ruby-3.0 /build-all-ruby/ /build-all-ruby/
318+
COPY --from=ruby-3.1 /build-all-ruby/ /build-all-ruby/
319+
COPY --from=ruby-3.2 /build-all-ruby/ /build-all-ruby/
320+
COPY --from=ruby-3.3 /build-all-ruby/ /build-all-ruby/
321+
COPY --from=ruby-3.4 /build-all-ruby/ /build-all-ruby/
322+
COPY --from=ruby-3.5-4.0 /build-all-ruby/ /build-all-ruby/
174323

175324
RUN rdfind -makehardlinks true -makeresultsfile false /build-all-ruby
176325

@@ -211,11 +360,21 @@ RUN dpkg --add-architecture i386 \
211360

212361
COPY --from=aggregator /build-all-ruby/ /build-all-ruby/
213362
COPY --from=ruby-0.x-2.0 /all-ruby/ /all-ruby/
214-
COPY --from=ruby-1.2-1.9 /all-ruby/bin/ /all-ruby/bin/
215-
COPY --from=ruby-2.1-2.4 /all-ruby/bin/ /all-ruby/bin/
216-
COPY --from=ruby-2.5-2.7 /all-ruby/bin/ /all-ruby/bin/
217-
COPY --from=ruby-3.0-3.2 /all-ruby/bin/ /all-ruby/bin/
218-
COPY --from=ruby-3.3-4.0 /all-ruby/bin/ /all-ruby/bin/
363+
COPY --from=ruby-1.2-1.8.7 /all-ruby/bin/ /all-ruby/bin/
364+
COPY --from=ruby-1.9 /all-ruby/bin/ /all-ruby/bin/
365+
COPY --from=ruby-2.1 /all-ruby/bin/ /all-ruby/bin/
366+
COPY --from=ruby-2.2 /all-ruby/bin/ /all-ruby/bin/
367+
COPY --from=ruby-2.3 /all-ruby/bin/ /all-ruby/bin/
368+
COPY --from=ruby-2.4 /all-ruby/bin/ /all-ruby/bin/
369+
COPY --from=ruby-2.5 /all-ruby/bin/ /all-ruby/bin/
370+
COPY --from=ruby-2.6 /all-ruby/bin/ /all-ruby/bin/
371+
COPY --from=ruby-2.7 /all-ruby/bin/ /all-ruby/bin/
372+
COPY --from=ruby-3.0 /all-ruby/bin/ /all-ruby/bin/
373+
COPY --from=ruby-3.1 /all-ruby/bin/ /all-ruby/bin/
374+
COPY --from=ruby-3.2 /all-ruby/bin/ /all-ruby/bin/
375+
COPY --from=ruby-3.3 /all-ruby/bin/ /all-ruby/bin/
376+
COPY --from=ruby-3.4 /all-ruby/bin/ /all-ruby/bin/
377+
COPY --from=ruby-3.5-4.0 /all-ruby/bin/ /all-ruby/bin/
219378

220379
COPY lib/* /all-ruby/lib/
221380
COPY all-ruby /all-ruby/

0 commit comments

Comments
 (0)