@@ -27,7 +27,7 @@ executors:
27
27
resource_class : macos.m1.medium.gen1
28
28
linux_arm64 :
29
29
machine :
30
- image : ubuntu-2004:202101-01
30
+ image : ubuntu-2004:2023.07.1
31
31
resource_class : arm.medium
32
32
33
33
commands :
@@ -173,7 +173,7 @@ jobs:
173
173
$env:SYSTEM_FLAG="--system"
174
174
test/test_path_preservation.ps1
175
175
176
- build-docker-image :
176
+ build-docker-image-x64 :
177
177
executor : bionic
178
178
steps :
179
179
- checkout
@@ -189,7 +189,7 @@ jobs:
189
189
name : test
190
190
command : make -C ./docker version=tot test
191
191
192
- publish-docker-image :
192
+ publish-docker-image-x64 :
193
193
executor : bionic
194
194
steps :
195
195
- checkout
@@ -209,6 +209,53 @@ jobs:
209
209
docker login -u "$DOCKER_USER" -p "$DOCKER_PASS"
210
210
make -C ./docker version=${CIRCLE_TAG} alias=latest push
211
211
212
+ publish-docker-image-arm64 :
213
+ executor : linux_arm64
214
+ steps :
215
+ - checkout
216
+ - run :
217
+ name : check if emscripten-releases-tags.json has changed
218
+ command : |
219
+ CHANGED_FILES=$(git diff --name-only <<pipeline.git.base_revision>>..<<pipeline.git.revision>>)
220
+ if [[ ! $CHANGED_FILES =~ "emscripten-releases-tags.json" ]]; then
221
+ echo "emscripten-releases-tags.json has not changed, skipping build and publish"
222
+ circleci-agent step halt
223
+ fi
224
+ - run :
225
+ name : extract latest emscripten arm64 linux version
226
+ command : |
227
+ ARM64_VERSION=$(grep -oP '(?<="latest-arm64-linux": ")[^"]*' emscripten-releases-tags.json)
228
+ ARM64_IMAGE_TAG=${ARM64_VERSION}-arm64
229
+ echo "export ARM64_VERSION=$ARM64_VERSION" >> $BASH_ENV
230
+ echo "export ARM64_IMAGE_TAG=$ARM64_IMAGE_TAG" >> $BASH_ENV
231
+ echo "ARM64_VERSION=$ARM64_VERSION"
232
+ echo "ARM64_IMAGE_TAG=$ARM64_IMAGE_TAG"
233
+ - run :
234
+ name : check if docker image already exists
235
+ command : |
236
+ if [ -z "$ARM64_VERSION" ]; then
237
+ echo "ARM64_VERSION is empty, skipping publish"
238
+ circleci-agent step halt
239
+ exit 0
240
+ fi
241
+ DOCKER_IMAGE_EXISTS=$(curl -s -o /dev/null -w "%{http_code}" https://hub.docker.com/v2/repositories/emscripten/emsdk/tags/$ARM64_IMAGE_TAG)
242
+ if [ "$DOCKER_IMAGE_EXISTS" = "200" ]; then
243
+ echo "Docker image: $ARM64_VERSION"
244
+ echo "Docker image already exists, skipping build and publish"
245
+ circleci-agent step halt
246
+ fi
247
+ - run :
248
+ name : build
249
+ command : make -C ./docker version=${ARM64_VERSION} build
250
+ - run :
251
+ name : test
252
+ command : make -C ./docker version=${ARM64_VERSION} test
253
+ - run :
254
+ name : push image
255
+ command : |
256
+ docker login -u "$DOCKER_USER" -p "$DOCKER_PASS"
257
+ make -C ./docker version=${ARM64_VERSION} alias=${ARM64_IMAGE_TAG} only_alias=true push
258
+
212
259
test-bazel-linux :
213
260
executor : bionic
214
261
steps :
@@ -284,13 +331,17 @@ workflows:
284
331
- test-windows
285
332
build-docker-image :
286
333
jobs :
287
- - build-docker-image
288
- - publish-docker-image :
334
+ - build-docker-image-x64
335
+ - publish-docker-image-x64 :
289
336
filters :
290
337
branches :
291
338
ignore : /.*/
292
339
tags :
293
340
only : /.*/
341
+ - publish-docker-image-arm64 :
342
+ filters :
343
+ branches :
344
+ only : main
294
345
test-bazel-linux :
295
346
jobs :
296
347
- test-bazel-linux
0 commit comments