rake-compiler-dock 1.2.2 → 1.3.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 22fdbf0b0336450a55882dd000bea66c52a43325c6de59b0721ffbc6b5360576
4
- data.tar.gz: 425f0ae751dfdcd3ff2936ff387c58b20d89e297d831c8c333ddd5738a9a92c2
3
+ metadata.gz: d0c53a8e4fde2b4ad57875b1e8ca11037cb9d9f101b451aaea52cdcef60dc56c
4
+ data.tar.gz: 9be653f556704bc9725aeec603c45a83491f62dd71b7e5b5e4eccd1635864a4a
5
5
  SHA512:
6
- metadata.gz: 290f60e3969979b7830ab2a69c8989c484dbdf116fc76d9424a5efb71e5a1a4ab0bb834bc6504b3db3b383b76fbdb35ea070566d5118420ebfcf8b454a85a0a3
7
- data.tar.gz: ab7a5180be028e305798032e35fc2070bce0ad882ace282ec21700b74552d35bf8a80dd2b660f9c66a8247605c11277eaf79c9ee338430b8ef4511bc945f1dfc
6
+ metadata.gz: 0c56bc4e310a1b5eb278ceb1da8b06a6bdbea9be2ddd6acf3be2c509afe60f542b8171e1c88cdcc6df9e21087028d91df1b46763f15c571d8ca71d4be6fdddc7
7
+ data.tar.gz: 2b2a2504d952cfe709cf0dece45d8ef7c83ac768af42eac27ec888a36c913c9e5d2b07f0e90bdb839945d3d4570b6ada0abb01b797e1e6a5249a521c83d59a88
@@ -1,12 +1,14 @@
1
- name: Build docker images
1
+ name: CI
2
2
  concurrency:
3
3
  group: "${{github.workflow}}-${{github.ref}}"
4
4
  cancel-in-progress: true
5
5
  on:
6
6
  workflow_dispatch:
7
+ schedule:
8
+ - cron: "0 5 * * 3" # At 05:00 on Wednesday # https://crontab.guru/#0_5_*_*_3
7
9
  push:
8
10
  branches:
9
- - main
11
+ - master
10
12
  tags:
11
13
  - "*.*.*"
12
14
  pull_request:
@@ -17,7 +19,7 @@ on:
17
19
  jobs:
18
20
  # These jobs use Buildx layer caching
19
21
  docker_build:
20
- name: Build
22
+ name: build image
21
23
 
22
24
  strategy:
23
25
  fail-fast: false
@@ -38,10 +40,10 @@ jobs:
38
40
  env:
39
41
  PLATFORM: ${{ matrix.platform }}
40
42
  steps:
41
- - uses: actions/checkout@v2
43
+ - uses: actions/checkout@v3
42
44
 
43
45
  - name: Cache Docker layers
44
- uses: actions/cache@v2
46
+ uses: actions/cache@v3
45
47
  with:
46
48
  path: tmp/build-cache
47
49
  key: ${{ runner.os }}-${{ matrix.platform }}-buildx-${{ github.sha }}
@@ -57,36 +59,41 @@ jobs:
57
59
  run: |
58
60
  docker buildx create --driver docker-container --use
59
61
  bundle exec rake build:${PLATFORM} RCD_DOCKER_BUILD="docker buildx build --cache-from=type=local,src=tmp/build-cache --cache-to=type=local,dest=tmp/build-cache-new --load"
62
+ docker images
60
63
 
61
64
  - name: Move build cache and remove outdated layers
62
65
  run: |
63
66
  rm -rf tmp/build-cache
64
67
  mv tmp/build-cache-new tmp/build-cache
65
68
 
69
+ - name: Basic tests on the generated image
70
+ env:
71
+ TEST_PLATFORM: ${{ matrix.platform }}
72
+ run: |
73
+ bundle exec rake test
74
+
66
75
  - name: Build rcd_test.gem
67
76
  run: |
68
- gem build rake-compiler-dock.gemspec
69
- gem install -l rake-compiler-dock-*.gem
70
77
  cd test/rcd_test/
71
78
  bundle install
72
79
  bundle exec rake clean clobber
73
80
  bundle exec rake gem:${PLATFORM}
74
81
 
75
82
  - name: Upload binary gem
76
- uses: actions/upload-artifact@v2
83
+ uses: actions/upload-artifact@v3
77
84
  with:
78
85
  name: gem-${{ matrix.platform }}
79
86
  path: test/rcd_test/pkg/*-*-*.gem
80
87
 
81
88
  - if: matrix.platform == 'jruby'
82
89
  name: Upload source gem
83
- uses: actions/upload-artifact@v2
90
+ uses: actions/upload-artifact@v3
84
91
  with:
85
92
  name: gem-ruby
86
93
  path: test/rcd_test/pkg/*-?.?.?.gem
87
94
 
88
95
  - if: contains(matrix.platform, 'x64-mingw')
89
- name: Build static rcd_test.gem
96
+ name: Build static rcd_test.gem for windows
90
97
  env:
91
98
  RCD_TEST_CONFIG: "--link-static"
92
99
  run: |
@@ -98,14 +105,48 @@ jobs:
98
105
  bundle exec rake gem:${PLATFORM}
99
106
 
100
107
  - if: contains(matrix.platform, 'x64-mingw')
101
- name: Upload static binary gem
102
- uses: actions/upload-artifact@v2
108
+ name: Upload static rcd_test.gem
109
+ uses: actions/upload-artifact@v3
103
110
  with:
104
111
  name: gem-${{ matrix.platform }}-static
105
112
  path: test/rcd_test/pkg/*-*-*.gem
106
113
 
114
+ job_test_source:
115
+ name: source gem
116
+ needs: docker_build
117
+ strategy:
118
+ fail-fast: false
119
+ matrix:
120
+ os:
121
+ - ubuntu
122
+ ruby:
123
+ - "3.2"
124
+ - "3.1"
125
+ - "3.0"
126
+ - "2.7"
127
+ - "2.6"
128
+ - "2.5"
129
+ - "2.4"
130
+ runs-on: ${{ matrix.os }}-latest
131
+ steps:
132
+ - uses: actions/checkout@v3
133
+ - uses: ruby/setup-ruby@v1
134
+ with:
135
+ ruby-version: ${{ matrix.ruby }}
136
+ - name: Download gem-ruby
137
+ uses: actions/download-artifact@v3
138
+ with:
139
+ name: gem-ruby
140
+ - name: Install gem-ruby
141
+ run: gem install --local *.gem --verbose
142
+ - name: Run tests
143
+ run: |
144
+ cd test/rcd_test/
145
+ bundle install
146
+ ruby -rrcd_test -S rake test
147
+
107
148
  job_test_native:
108
- name: Test (${{matrix.ruby}}, ${{matrix.platform}})
149
+ name: native
109
150
  needs: docker_build
110
151
  strategy:
111
152
  fail-fast: false
@@ -115,6 +156,7 @@ jobs:
115
156
  - macos
116
157
  - ubuntu
117
158
  ruby:
159
+ - "3.2"
118
160
  - "3.1"
119
161
  - "3.0"
120
162
  - "2.7"
@@ -128,27 +170,30 @@ jobs:
128
170
  platform: x86_64-darwin
129
171
  - os: ubuntu
130
172
  platform: x86_64-linux
131
- - os: ubuntu
132
- platform: ruby
133
173
  - os: ubuntu
134
174
  ruby: jruby-head
135
175
  platform: jruby
136
176
  - os: windows
137
177
  ruby: "3.1"
138
178
  platform: x64-mingw-ucrt
179
+ - os: windows
180
+ ruby: "3.2"
181
+ platform: x64-mingw-ucrt
139
182
  exclude:
140
183
  - os: windows
141
184
  ruby: "3.1"
185
+ - os: windows
186
+ ruby: "3.2"
142
187
 
143
188
  runs-on: ${{ matrix.os }}-latest
144
189
  steps:
145
- - uses: actions/checkout@v2
190
+ - uses: actions/checkout@v3
146
191
  - uses: ruby/setup-ruby@v1
147
192
  with:
148
193
  ruby-version: ${{ matrix.ruby }}
149
194
  - run: ruby --version
150
195
  - name: Download gem-${{matrix.platform}}
151
- uses: actions/download-artifact@v2
196
+ uses: actions/download-artifact@v3
152
197
  with:
153
198
  name: gem-${{ matrix.platform }}
154
199
  - name: Install gem-${{matrix.platform}}
@@ -160,7 +205,7 @@ jobs:
160
205
  ruby -rrcd_test -S rake test
161
206
 
162
207
  job_test_native_static:
163
- name: Test static (${{matrix.ruby}}, ${{matrix.platform}})
208
+ name: native static
164
209
  needs: docker_build
165
210
  strategy:
166
211
  fail-fast: false
@@ -168,6 +213,7 @@ jobs:
168
213
  os:
169
214
  - windows
170
215
  ruby:
216
+ - "3.2"
171
217
  - "3.1"
172
218
  - "3.0"
173
219
  - "2.7"
@@ -180,19 +226,24 @@ jobs:
180
226
  - os: windows
181
227
  ruby: "3.1"
182
228
  platform: x64-mingw-ucrt
229
+ - os: windows
230
+ ruby: "3.2"
231
+ platform: x64-mingw-ucrt
183
232
  exclude:
184
233
  - os: windows
185
234
  ruby: "3.1"
235
+ - os: windows
236
+ ruby: "3.2"
186
237
 
187
238
  runs-on: ${{ matrix.os }}-latest
188
239
  steps:
189
- - uses: actions/checkout@v2
240
+ - uses: actions/checkout@v3
190
241
  - uses: ruby/setup-ruby@v1
191
242
  with:
192
243
  ruby-version: ${{ matrix.ruby }}
193
244
  - run: ruby --version
194
245
  - name: Download gem-${{matrix.platform}}-static
195
- uses: actions/download-artifact@v2
246
+ uses: actions/download-artifact@v3
196
247
  with:
197
248
  name: gem-${{ matrix.platform }}-static
198
249
  - name: Install gem-${{matrix.platform}}-static
@@ -204,7 +255,7 @@ jobs:
204
255
  ruby -rrcd_test -S rake test
205
256
 
206
257
  job_test_multiarch:
207
- name: Test ${{matrix.platform}} on ${{matrix.from_image}}
258
+ name: multiarch (${{matrix.platform}} on ${{matrix.from_image}})
208
259
  needs: docker_build
209
260
  strategy:
210
261
  fail-fast: false
@@ -228,9 +279,9 @@ jobs:
228
279
 
229
280
  runs-on: ubuntu-latest
230
281
  steps:
231
- - uses: actions/checkout@v2
282
+ - uses: actions/checkout@v3
232
283
  - name: Download gem-${{matrix.platform}}
233
- uses: actions/download-artifact@v2
284
+ uses: actions/download-artifact@v3
234
285
  with:
235
286
  name: gem-${{ matrix.platform }}
236
287
  - name: Build image and Run tests
@@ -0,0 +1,67 @@
1
+ name: Publish docker images to GHCR
2
+ concurrency:
3
+ group: "${{github.workflow}}-${{github.ref}}"
4
+ cancel-in-progress: true
5
+ on:
6
+ workflow_dispatch:
7
+ schedule:
8
+ - cron: "0 3 * * 3" # At 03:00 on Wednesday # https://crontab.guru/#0_3_*_*_3
9
+
10
+ jobs:
11
+ build:
12
+ strategy:
13
+ fail-fast: false
14
+ matrix:
15
+ platform:
16
+ - x86-mingw32
17
+ - x64-mingw-ucrt
18
+ - x64-mingw32
19
+ - x86-linux
20
+ - x86_64-linux
21
+ - x86_64-darwin
22
+ - arm64-darwin
23
+ - arm-linux
24
+ - aarch64-linux
25
+ - jruby
26
+ runs-on: ubuntu-latest
27
+ steps:
28
+ - uses: actions/checkout@v3
29
+ - name: Use cache from primary pipeline
30
+ uses: actions/cache@v3
31
+ with:
32
+ path: tmp/build-cache
33
+ key: ${{runner.os}}-${{matrix.platform}}-buildx-${{github.sha}}
34
+ restore-keys: |
35
+ ${{runner.os}}-${{matrix.platform}}-buildx
36
+ - uses: ruby/setup-ruby@v1
37
+ with:
38
+ ruby-version: "3.1"
39
+ bundler-cache: true
40
+ - id: rcd_config
41
+ run: |
42
+ bundle exec ruby -e ' \
43
+ require "rake_compiler_dock"; \
44
+ print "image_name="; \
45
+ puts RakeCompilerDock::Starter.container_image_name(:platform => %q(${{matrix.platform}})); \
46
+ print "snapshot_name="; \
47
+ puts RakeCompilerDock::Starter.container_image_name(:platform => %q(${{matrix.platform}}), :version => %q(snapshot)); \
48
+ ' | tee -a $GITHUB_OUTPUT
49
+
50
+ - name: Build docker image
51
+ env:
52
+ RCD_DOCKER_BUILD: docker buildx build --cache-from=type=local,src=tmp/build-cache --cache-to=type=local,dest=tmp/build-cache-new --load
53
+ run: |
54
+ docker buildx create --driver docker-container --use
55
+ bundle exec rake build:${{matrix.platform}}
56
+ # move build cache and remove outdated layers
57
+ rm -rf tmp/build-cache
58
+ mv tmp/build-cache-new tmp/build-cache
59
+ - uses: docker/login-action@v2
60
+ with:
61
+ registry: ghcr.io
62
+ username: ${{github.actor}}
63
+ password: ${{secrets.GITHUB_TOKEN}}
64
+ - run: |
65
+ docker images
66
+ docker tag ${{steps.rcd_config.outputs.image_name}} ${{steps.rcd_config.outputs.snapshot_name}}
67
+ docker push ${{steps.rcd_config.outputs.snapshot_name}}
data/.gitignore CHANGED
@@ -4,6 +4,7 @@
4
4
  /Dockerfile.mri.arm-linux
5
5
  /Dockerfile.mri.arm64-darwin
6
6
  /Dockerfile.mri.arm64-linux
7
+ /Dockerfile.mri.x64-mingw-ucrt
7
8
  /Dockerfile.mri.x64-mingw32
8
9
  /Dockerfile.mri.x86-linux
9
10
  /Dockerfile.mri.x86-mingw32
@@ -11,6 +12,7 @@
11
12
  /Dockerfile.mri.x86_64-linux
12
13
  /Gemfile.lock
13
14
  /_yardoc/
15
+ /cache/
14
16
  /coverage/
15
17
  /doc/
16
18
  /pkg/
data/CONTRIBUTING.md ADDED
@@ -0,0 +1,38 @@
1
+ # Contributing
2
+
3
+ This document is intended for the rake-compiler-dock contributors.
4
+
5
+ ## Building a versioned image
6
+
7
+ We want to preserve the cache if we can, so patch releases don't change _all_ the layers. There are a few ways to do this.
8
+
9
+
10
+ ### Using local docker
11
+
12
+ If you're going to keep your local docker cache, around, you can run things in parallel:
13
+
14
+ ```
15
+ bundle exec rake build
16
+ ```
17
+
18
+
19
+ ### Use a custom docker command
20
+
21
+ If you're a pro and want to run a custom command and still run things in parallel:
22
+
23
+ ```
24
+ export RCD_DOCKER_BUILD="docker build --arg1 --arg2"
25
+ bundle exec rake build
26
+ ```
27
+
28
+
29
+ ### Using the buildx backend and cache
30
+
31
+ Here's one way to leverage the buildx cache, which will turn off parallel builds but generates an external cache directory that can be saved and re-used:
32
+
33
+ ```
34
+ export RCD_USE_BUILDX_CACHE=t
35
+ docker buildx create --use --driver=docker-container
36
+ bundle exec rake build
37
+ ```
38
+
data/Dockerfile.jruby CHANGED
@@ -26,19 +26,22 @@ ENV BASH_ENV /etc/rubybashrc
26
26
 
27
27
  # install rubies and fix permissions on
28
28
  RUN bash -c " \
29
- export CFLAGS='-s -O3 -fno-fast-math -fPIC' && \
30
- for v in jruby-9.3.2.0 ; do \
31
- rvm install --binary \$v --patch \$(echo ~/patches/ruby-\$v/* | tr ' ' ','); \
32
- done && \
33
- rvm cleanup all && \
34
- find /usr/local/rvm -type d -print0 | sudo xargs -0 chmod g+sw "
29
+ export CFLAGS='-s -O3 -fno-fast-math -fPIC' && \
30
+ for v in jruby-9.4.0.0 ; do \
31
+ rvm install --binary \$v --patch \$(echo ~/patches/ruby-\$v/* | tr ' ' ','); \
32
+ done && \
33
+ rvm cleanup all && \
34
+ find /usr/local/rvm -type d -print0 | sudo xargs -0 chmod g+sw \
35
+ "
35
36
 
36
- # Install rake-compiler and typical gems in all Rubies
37
- # do not generate documentation for gems
38
- RUN echo "gem: --no-ri --no-rdoc" >> ~/.gemrc && \
39
- bash -c " \
40
- rvm all do gem install --no-document bundler 'bundler:~>1.16' rake-compiler hoe rubygems-tasks && \
41
- find /usr/local/rvm -type d -print0 | sudo xargs -0 chmod g+sw "
37
+ RUN bash -c " \
38
+ echo "gem: --no-ri --no-rdoc" >> ~/.gemrc && \
39
+ rvm all do gem update --system --no-document && \
40
+ rvm all do gem update --no-document && \
41
+ rvm all do gem install bundler --no-document && \
42
+ rvm all do gem install --no-document rake-compiler:1.2.1 && \
43
+ find /usr/local/rvm -type d -print0 | sudo xargs -0 chmod g+sw \
44
+ "
42
45
 
43
46
  # Install rake-compiler's cross rubies in global dir instead of /root
44
47
  RUN sudo mkdir -p /usr/local/rake-compiler && \
@@ -47,8 +50,8 @@ RUN sudo mkdir -p /usr/local/rake-compiler && \
47
50
 
48
51
  USER root
49
52
 
50
- RUN bash -c "rvm alias create default jruby-9.3.2.0"
51
- RUN echo "rvm use jruby-9.3.2.0 > /dev/null" >> /etc/rubybashrc
53
+ RUN bash -c "rvm alias create default jruby-9.4.0.0"
54
+ RUN echo "rvm use jruby-9.4.0.0 > /dev/null" >> /etc/rubybashrc
52
55
 
53
56
  # Add rvm to the global bashrc
54
57
  RUN echo "source /etc/profile.d/rvm.sh" >> /etc/bash.bashrc