@@ -45,18 +45,26 @@ jobs:
4545 fail-fast : false
4646 matrix :
4747 include :
48- - platform : aarch64-linux
49- - platform : arm-linux
48+ - platform : aarch64-linux-gnu
49+ alias : aarch64-linux
50+ - platform : aarch64-linux-musl
51+ - platform : arm-linux-gnu
52+ alias : arm-linux
53+ - platform : arm-linux-musl
5054 - platform : arm64-darwin
5155 - platform : jruby
5256 - platform : x64-mingw-ucrt
5357 static : true
5458 - platform : x64-mingw32
5559 static : true
56- - platform : x86-linux
60+ - platform : x86-linux-gnu
61+ alias : x86-linux
62+ - platform : x86-linux-musl
5763 - platform : x86-mingw32
5864 - platform : x86_64-darwin
59- - platform : x86_64-linux
65+ - platform : x86_64-linux-gnu
66+ alias : x86_64-linux
67+ - platform : x86_64-linux-musl
6068 runs-on : ubuntu-latest
6169 steps :
6270 - uses : actions/checkout@v3
@@ -114,23 +122,29 @@ jobs:
114122 name : gem-${{ matrix.platform }}-static
115123 path : test/rcd_test/pkg/*-*-*.gem
116124
125+ - if : matrix.alias
126+ name : Build native gem ${{ matrix.alias }}
127+ run : |
128+ cd test/rcd_test/
129+ bundle install
130+ bundle exec rake clean clobber
131+ bundle exec rake gem:${{ matrix.alias }}
132+
133+ - if : matrix.alias
134+ name : Upload native gem ${{ matrix.alias }}
135+ uses : actions/upload-artifact@v3
136+ with :
137+ name : gem-${{ matrix.alias }}
138+ path : test/rcd_test/pkg/*-*-*.gem
139+
117140 test_source_gem :
118- name : test source
141+ name : source gem
119142 needs : build_source_gem
120143 strategy :
121144 fail-fast : false
122145 matrix :
123- os :
124- - ubuntu
125- ruby :
126- - " 3.3"
127- - " 3.2"
128- - " 3.1"
129- - " 3.0"
130- - " 2.7"
131- - " 2.6"
132- - " 2.5"
133- - " 2.4"
146+ os : [ubuntu]
147+ ruby : ["3.3", "3.2", "3.1", "3.0", "2.7", "2.6", "2.5", "2.4"]
134148 runs-on : ${{ matrix.os }}-latest
135149 steps :
136150 - uses : actions/checkout@v3
@@ -141,37 +155,117 @@ jobs:
141155 uses : actions/download-artifact@v3
142156 with :
143157 name : gem-ruby
144- - name : Install source gem
145- run : gem install --local *.gem --verbose
146158 - name : Test source gem
147159 run : |
160+ gem install --local *.gem --verbose
148161 cd test/rcd_test/
149162 bundle install
150163 ruby -rrcd_test -S rake test
151164
152- test_native_gem :
153- name : test native
165+ test-x86_64-linux-setup-ruby :
166+ name : " ${{ matrix.platform }} setup-ruby(${{ matrix.ruby }}) "
154167 needs : build_native_gem
155168 strategy :
156169 fail-fast : false
157170 matrix :
158- os :
159- - macos
160- - ubuntu
161- ruby :
162- - " 3.3"
163- - " 3.2"
164- - " 3.1"
165- - " 3.0"
166- - " 2.7"
167- - " 2.6"
168- - " 2.5"
169- - " 2.4"
171+ platform : [x86_64-linux, x86_64-linux-gnu]
172+ ruby : ["3.3", "3.2", "3.1", "3.0", "2.7", "2.6", "2.5", "2.4"]
173+ include :
174+ # declare rubygems for each ruby version
175+ - { ruby: "2.7", rubygems: "3.4.22" }
176+ - { ruby: "2.6", rubygems: "3.4.22" }
177+ - { ruby: "2.5", rubygems: "3.3.26" }
178+ - { ruby: "2.4", rubygems: "3.3.26" }
179+ runs-on : ubuntu-latest
180+ steps :
181+ - uses : actions/checkout@v3
182+ - uses : ruby/setup-ruby@v1
183+ with :
184+ ruby-version : ${{ matrix.ruby }}
185+ - name : Download gem-${{ matrix.platform }}
186+ uses : actions/download-artifact@v3
187+ with :
188+ name : gem-${{ matrix.platform }}
189+ - name : Test gem-${{ matrix.platform }}
190+ run : |
191+ gem update --system ${{ matrix.rubygems }}
192+ gem install --local *.gem --verbose
193+ cd test/rcd_test/
194+ bundle install
195+ ruby -rrcd_test -S rake test
196+
197+ test_architecture_matrix :
198+ name : " ${{ matrix.platform }} ${{ matrix.ruby }}"
199+ needs : build_native_gem
200+ strategy :
201+ fail-fast : false
202+ matrix :
203+ platform :
204+ - aarch64-linux
205+ - aarch64-linux-gnu
206+ - aarch64-linux-musl
207+ - arm-linux
208+ - arm-linux-gnu
209+ - arm-linux-musl
210+ - x86-linux
211+ - x86-linux-gnu
212+ - x86-linux-musl
213+ - x86_64-linux
214+ - x86_64-linux-gnu
215+ - x86_64-linux-musl
216+ ruby : ["3.3", "3.2", "3.1", "3.0", "2.7", "2.6", "2.5", "2.4"]
217+ include :
218+ # declare rubygems for each ruby version
219+ - { ruby: "2.7", rubygems: "3.4.22" }
220+ - { ruby: "2.6", rubygems: "3.4.22" }
221+ - { ruby: "2.5", rubygems: "3.3.26" }
222+ - { ruby: "2.4", rubygems: "3.3.26" }
223+ # declare docker image for each platform
224+ - { platform: aarch64-linux-musl, docker_tag: "-alpine" }
225+ - { platform: arm-linux-musl, docker_tag: "-alpine" }
226+ - { platform: x86-linux-musl, docker_tag: "-alpine" }
227+ - { platform: x86_64-linux-musl, docker_tag: "-alpine" }
228+ # declare docker platform for each platform
229+ - { platform: aarch64-linux, docker_platform: "--platform=linux/arm64" }
230+ - { platform: aarch64-linux-gnu, docker_platform: "--platform=linux/arm64" }
231+ - { platform: aarch64-linux-musl, docker_platform: "--platform=linux/arm64" }
232+ - { platform: arm-linux, docker_platform: "--platform=linux/arm/v7" }
233+ - { platform: arm-linux-gnu, docker_platform: "--platform=linux/arm/v7" }
234+ - { platform: arm-linux-musl, docker_platform: "--platform=linux/arm/v7" }
235+ - { platform: x86-linux, docker_platform: "--platform=linux/386" }
236+ - { platform: x86-linux-gnu, docker_platform: "--platform=linux/386" }
237+ - { platform: x86-linux-musl, docker_platform: "--platform=linux/386" }
238+ runs-on : ubuntu-latest
239+ steps :
240+ - uses : actions/checkout@v3
241+ - name : Download gem-${{ matrix.platform }}
242+ uses : actions/download-artifact@v3
243+ with :
244+ name : gem-${{ matrix.platform }}
245+ - name : Run tests
246+ run : |
247+ docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
248+ docker run --rm -v $PWD:/work -w /work \
249+ ${{ matrix.docker_platform}} ruby:${{ matrix.ruby }}${{ matrix.docker_tag }} \
250+ sh -c "
251+ gem update --system ${{ matrix.rubygems }} &&
252+ gem install --local *.gem --verbose &&
253+ cd test/rcd_test/ &&
254+ bundle install &&
255+ ruby -rrcd_test -S rake test
256+ "
257+
258+ test_the_rest :
259+ name : " ${{ matrix.platform }} ${{ matrix.ruby }}"
260+ needs : build_native_gem
261+ strategy :
262+ fail-fast : false
263+ matrix :
264+ os : [macos]
265+ ruby : ["3.3", "3.2", "3.1", "3.0", "2.7", "2.6", "2.5", "2.4"]
170266 include :
171267 - os : macos
172268 platform : x86_64-darwin
173- - os : ubuntu
174- platform : x86_64-linux
175269 - os : ubuntu
176270 ruby : jruby
177271 platform : jruby
@@ -213,16 +307,15 @@ jobs:
213307 uses : actions/download-artifact@v3
214308 with :
215309 name : gem-${{ matrix.platform }}
216- - name : Install gem-${{ matrix.platform }}
217- run : gem install --local *.gem --verbose
218- - name : Run tests
310+ - name : Test gem-${{ matrix.platform }}
219311 run : |
312+ gem install --local *.gem --verbose
220313 cd test/rcd_test/
221314 bundle install
222315 ruby -rrcd_test -S rake test
223316
224- test_static_native_gem :
225- name : test static
317+ test_windows_static :
318+ name : " static ${{ matrix.platform }} ${{ matrix.ruby }} "
226319 needs : build_native_gem
227320 strategy :
228321 fail-fast : false
@@ -266,35 +359,37 @@ jobs:
266359 uses : actions/download-artifact@v3
267360 with :
268361 name : gem-${{ matrix.platform }}-static
269- - name : Install gem-${{ matrix.platform }}-static
270- run : gem install --local *.gem --verbose
271- - name : Run tests
362+ - name : Test gem-${{ matrix.platform }}-static
272363 run : |
364+ gem install --local *.gem --verbose
273365 cd test/rcd_test/
274366 bundle install
275367 ruby -rrcd_test -S rake test
276368
277- test_native_gem_multiarch :
278- name : ${{ matrix.platform }} on ${{ matrix.from_image }}
369+ test_ad_hoc :
370+ name : " ${{ matrix.platform }} on ${{ matrix.from_image }}"
279371 needs : build_native_gem
280372 strategy :
281373 fail-fast : false
282374 matrix :
283375 include :
284376 - from_image : amd64/centos
285- platform : x86_64-linux
377+ platform : x86_64-linux # centos-8 ships ruby 2.5, rubygems won't recognize -gnu suffix
286378 dockerfile : centos
287379 - from_image : navikey/raspbian-bullseye
288- platform : arm-linux
380+ platform : arm-linux # bullseye ships ruby 2.7, rubygems won't recognize -gnu suffix
289381 dockerfile : debian
290382 - from_image : arm64v8/ubuntu
291- platform : aarch64-linux
383+ platform : aarch64-linux # arm64v8 ships ruby 3.0, rubygems won't recognize -gnu suffix
292384 dockerfile : debian
293385 - from_image : i386/alpine
294- platform : x86-linux
386+ platform : x86-linux-musl
295387 dockerfile : alpine
296388 - from_image : arm32v6/alpine
297- platform : arm-linux
389+ platform : arm-linux-musl
390+ dockerfile : alpine
391+ - from_image : alpine
392+ platform : x86_64-linux-musl
298393 dockerfile : alpine
299394 runs-on : ubuntu-latest
300395 steps :
0 commit comments