Newer
Older
.before-script-build: &before-script-build
- |
if [[ ! -z "$CI_BUILD_PLATFORMS" ]]; then
export OS_ARCH=`echo $CI_BUILD_PLATFORMS | tr ' ' '\n' | \
sed 's|\/||2' | sed 's|\/|-|' | tr '\n' ' '`
fi
- |
export CI_APP_REPO=${CI_APP_REPO:-$CI_REGISTRY_IMAGE}
if [[ $CI_COMMIT_BRANCH == "main" || $CI_COMMIT_BRANCH == "freeze-version" ]]; then
export CI_APP_TAG=${CI_APP_TAG:-$R_VERSION}
else
export CI_APP_TAG=${CI_APP_TAG:-$CI_COMMIT_SHA}
fi
- >
echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER
--password-stdin $CI_REGISTRY
- name: glcr.b-data.ch/docker/docker:dind
alias: docker
variables:
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: "/certs"
stages:
- .pre
- build1
- build2
- test
- deploy
- .post
tags:
- arch:amd64
- os:linux
script:
- >
--build-arg R_VERSION
--build-arg NCPUS=$((`nproc`/2+1))
--build-arg BUILD_START=$(date -uIseconds)
-f geospatial/latest.Dockerfile .
--build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG-linux-amd64
--build-arg BUILD_START=$(date -uIseconds)
- >
docker build
--build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG-linux-amd64
--build-arg BUILD_START=$(date -uIseconds)
-t $CI_APP_REPO:$CI_APP_TAG-docker-linux-amd64
-t $CI_APP_REPO:latest-docker-linux-amd64
-f common/subtags/docker/Dockerfile .
- >
docker build
--build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG-docker-linux-amd64
--build-arg BUILD_START=$(date -uIseconds)
-t $CI_APP_REPO:$CI_APP_TAG-docker-root-linux-amd64
-t $CI_APP_REPO:latest-docker-root-linux-amd64
-f common/subtags/root/Dockerfile .
- if: $CI_COMMIT_BRANCH == "main" && $UPDATE_MODE != "true" && $CI_BUILD_PLATFORMS =~ /(linux\/amd64)/
changes:
- geospatial/latest.Dockerfile
build:latest-linux-arm64v8:
extends: .build
tags:
- arch:arm64/v8
- os:linux
script:
- >
--build-arg R_VERSION
--build-arg NCPUS=$((`nproc`/2+1))
--build-arg BUILD_START=$(date -uIseconds)
-f geospatial/latest.Dockerfile .
--build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG-linux-arm64v8
--build-arg BUILD_START=$(date -uIseconds)
- >
docker build
--build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG-linux-arm64v8
--build-arg BUILD_START=$(date -uIseconds)
-t $CI_APP_REPO:$CI_APP_TAG-docker-linux-arm64v8
-t $CI_APP_REPO:latest-docker-linux-arm64v8
-f common/subtags/docker/Dockerfile .
- >
docker build
--build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG-docker-linux-arm64v8
--build-arg BUILD_START=$(date -uIseconds)
-t $CI_APP_REPO:$CI_APP_TAG-docker-root-linux-arm64v8
-t $CI_APP_REPO:latest-docker-root-linux-arm64v8
-f common/subtags/root/Dockerfile .
- if: $CI_COMMIT_BRANCH == "main" && $UPDATE_MODE != "true" && $CI_BUILD_PLATFORMS =~ /(linux\/arm64\/v8)/
changes:
- geospatial/latest.Dockerfile
build:version-linux-amd64:
extends: .build
tags:
- arch:amd64
- os:linux
script:
- >
--build-arg NCPUS=$((`nproc`/2+1))
--build-arg BUILD_START=$(date -uIseconds)
-f geospatial/$R_VERSION.Dockerfile .
- >
docker build
--build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG-linux-amd64
--build-arg BUILD_START=$(date -uIseconds)
- >
docker build
--build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG-linux-amd64
--build-arg BUILD_START=$(date -uIseconds)
-t $CI_APP_REPO:$CI_APP_TAG-docker-linux-amd64
-f common/subtags/docker/Dockerfile .
- >
docker build
--build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG-docker-linux-amd64
--build-arg BUILD_START=$(date -uIseconds)
-t $CI_APP_REPO:$CI_APP_TAG-docker-root-linux-amd64
-f common/subtags/root/Dockerfile .
- docker push -a $CI_APP_REPO
- if: $CI_COMMIT_BRANCH == "freeze-version" && $CI_PIPELINE_TRIGGERED && $CI_BUILD_PLATFORMS =~ /(linux\/amd64)/
- geospatial/$R_VERSION.Dockerfile
build:version-linux-arm64v8:
extends: .build
--build-arg NCPUS=$((`nproc`/2+1))
--build-arg BUILD_START=$(date -uIseconds)
-f geospatial/$R_VERSION.Dockerfile .
- >
docker build
--build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG-linux-arm64v8
--build-arg BUILD_START=$(date -uIseconds)
- >
docker build
--build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG-linux-arm64v8
--build-arg BUILD_START=$(date -uIseconds)
-t $CI_APP_REPO:$CI_APP_TAG-docker-linux-arm64v8
-f common/subtags/docker/Dockerfile .
- >
docker build
--build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG-docker-linux-arm64v8
--build-arg BUILD_START=$(date -uIseconds)
-t $CI_APP_REPO:$CI_APP_TAG-docker-root-linux-arm64v8
-f common/subtags/root/Dockerfile .
- docker push -a $CI_APP_REPO
- if: $CI_COMMIT_BRANCH == "freeze-version" && $CI_PIPELINE_TRIGGERED && $CI_BUILD_PLATFORMS =~ /(linux\/arm64\/v8)/
- geospatial/$R_VERSION.Dockerfile
build-manifest:latest-linux-multiarch:
extends: .build
needs: ["build:latest-linux-amd64", "build:latest-linux-arm64v8"]
script:
- |
for i in $OS_ARCH; do
export CI_MANIFEST_LIST="$CI_MANIFEST_LIST $CI_APP_REPO:$CI_APP_TAG-$i"
export CI_MANIFEST_LIST_ROOT="$CI_MANIFEST_LIST_ROOT $CI_APP_REPO:$CI_APP_TAG-root-$i"
export CI_MANIFEST_LIST_DOCKER="$CI_MANIFEST_LIST_DOCKER $CI_APP_REPO:$CI_APP_TAG-docker-$i"
export CI_MANIFEST_LIST_DOCKER_ROOT="$CI_MANIFEST_LIST_DOCKER_ROOT $CI_APP_REPO:$CI_APP_TAG-docker-root-$i"
docker manifest create $CI_APP_REPO:$CI_APP_TAG $CI_MANIFEST_LIST
docker manifest create $CI_APP_REPO:$CI_APP_TAG-root $CI_MANIFEST_LIST_ROOT
docker manifest create $CI_APP_REPO:$CI_APP_TAG-docker $CI_MANIFEST_LIST_DOCKER
docker manifest create $CI_APP_REPO:$CI_APP_TAG-docker-root $CI_MANIFEST_LIST_DOCKER_ROOT
if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then
docker manifest annotate --variant v8 $CI_APP_REPO:$CI_APP_TAG \
$CI_APP_REPO:$CI_APP_TAG-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$CI_APP_TAG-root \
$CI_APP_REPO:$CI_APP_TAG-root-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$CI_APP_TAG-docker \
$CI_APP_REPO:$CI_APP_TAG-docker-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$CI_APP_TAG-docker-root \
$CI_APP_REPO:$CI_APP_TAG-docker-root-linux-arm64v8
fi
docker manifest push $CI_APP_REPO:$CI_APP_TAG
docker manifest push $CI_APP_REPO:$CI_APP_TAG-docker
docker manifest push $CI_APP_REPO:$CI_APP_TAG-docker-root
docker manifest create $CI_APP_REPO:latest $CI_MANIFEST_LIST
docker manifest create $CI_APP_REPO:latest-root $CI_MANIFEST_LIST_ROOT
docker manifest create $CI_APP_REPO:latest-docker $CI_MANIFEST_LIST_DOCKER
docker manifest create $CI_APP_REPO:latest-docker-root $CI_MANIFEST_LIST_DOCKER_ROOT
if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then
docker manifest annotate --variant v8 $CI_APP_REPO:latest \
docker manifest annotate --variant v8 $CI_APP_REPO:latest-root \
docker manifest annotate --variant v8 $CI_APP_REPO:latest-docker \
$CI_APP_REPO:$CI_APP_TAG-docker-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:latest-docker-root \
$CI_APP_REPO:$CI_APP_TAG-docker-root-linux-arm64v8
docker manifest push $CI_APP_REPO:latest
docker manifest push $CI_APP_REPO:latest-root
docker manifest push $CI_APP_REPO:latest-docker
docker manifest push $CI_APP_REPO:latest-docker-root
docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN $CI_MANIFEST_LIST
docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN-root $CI_MANIFEST_LIST_ROOT
docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN-docker $CI_MANIFEST_LIST_DOCKER
docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN-docker-root $CI_MANIFEST_LIST_DOCKER_ROOT
if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN \
$CI_APP_REPO:$CI_APP_TAG-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN-root \
$CI_APP_REPO:$CI_APP_TAG-root-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN-docker \
$CI_APP_REPO:$CI_APP_TAG-docker-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN-docker-root \
$CI_APP_REPO:$CI_APP_TAG-docker-root-linux-arm64v8
fi
docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN
docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN-root
docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN-docker
docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN-docker-root
docker manifest create $CI_APP_REPO:$VERSION_MAJ $CI_MANIFEST_LIST
docker manifest create $CI_APP_REPO:$VERSION_MAJ-root $CI_MANIFEST_LIST_ROOT
docker manifest create $CI_APP_REPO:$VERSION_MAJ-docker $CI_MANIFEST_LIST_DOCKER
docker manifest create $CI_APP_REPO:$VERSION_MAJ-docker-root $CI_MANIFEST_LIST_DOCKER_ROOT
if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ \
$CI_APP_REPO:$CI_APP_TAG-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ-root \
$CI_APP_REPO:$CI_APP_TAG-root-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ-docker \
$CI_APP_REPO:$CI_APP_TAG-docker-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ-docker-root \
$CI_APP_REPO:$CI_APP_TAG-docker-root-linux-arm64v8
fi
docker manifest push $CI_APP_REPO:$VERSION_MAJ
docker manifest push $CI_APP_REPO:$VERSION_MAJ-docker
docker manifest push $CI_APP_REPO:$VERSION_MAJ-docker-root
- if: $CI_COMMIT_BRANCH == "main" && $UPDATE_MODE != "true"
build-manifest:version-linux-multiarch:
extends: .build
needs: ["build:version-linux-amd64", "build:version-linux-arm64v8"]
- |
for i in $OS_ARCH; do
export CI_MANIFEST_LIST="$CI_MANIFEST_LIST $CI_APP_REPO:$CI_APP_TAG-$i"
export CI_MANIFEST_LIST_ROOT="$CI_MANIFEST_LIST_ROOT $CI_APP_REPO:$CI_APP_TAG-root-$i"
export CI_MANIFEST_LIST_DOCKER="$CI_MANIFEST_LIST_DOCKER $CI_APP_REPO:$CI_APP_TAG-docker-$i"
export CI_MANIFEST_LIST_DOCKER_ROOT="$CI_MANIFEST_LIST_DOCKER_ROOT $CI_APP_REPO:$CI_APP_TAG-docker-root-$i"
docker manifest create $CI_APP_REPO:$CI_APP_TAG $CI_MANIFEST_LIST
docker manifest create $CI_APP_REPO:$CI_APP_TAG-root $CI_MANIFEST_LIST_ROOT
docker manifest create $CI_APP_REPO:$CI_APP_TAG-docker $CI_MANIFEST_LIST_DOCKER
docker manifest create $CI_APP_REPO:$CI_APP_TAG-docker-root $CI_MANIFEST_LIST_DOCKER_ROOT
if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then
docker manifest annotate --variant v8 $CI_APP_REPO:$CI_APP_TAG \
$CI_APP_REPO:$CI_APP_TAG-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$CI_APP_TAG-root \
$CI_APP_REPO:$CI_APP_TAG-root-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$CI_APP_TAG-docker \
$CI_APP_REPO:$CI_APP_TAG-docker-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$CI_APP_TAG-docker-root \
$CI_APP_REPO:$CI_APP_TAG-docker-root-linux-arm64v8
fi
docker manifest push $CI_APP_REPO:$CI_APP_TAG
docker manifest push $CI_APP_REPO:$CI_APP_TAG-docker
docker manifest push $CI_APP_REPO:$CI_APP_TAG-docker-root
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
if [[ "$TAG_VERSION_MAJ_MIN" == "true" ]]; then
docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN $CI_MANIFEST_LIST
docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN-root $CI_MANIFEST_LIST_ROOT
docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN-docker $CI_MANIFEST_LIST_DOCKER
docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN-docker-root $CI_MANIFEST_LIST_DOCKER_ROOT
if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN \
$CI_APP_REPO:$CI_APP_TAG-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN-root \
$CI_APP_REPO:$CI_APP_TAG-root-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN-docker \
$CI_APP_REPO:$CI_APP_TAG-docker-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN-docker-root \
$CI_APP_REPO:$CI_APP_TAG-docker-root-linux-arm64v8
fi
docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN
docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN-root
docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN-docker
docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN-docker-root
fi
if [[ "$TAG_VERSION_MAJ" == "true" ]]; then
docker manifest create $CI_APP_REPO:$VERSION_MAJ $CI_MANIFEST_LIST
docker manifest create $CI_APP_REPO:$VERSION_MAJ-root $CI_MANIFEST_LIST_ROOT
docker manifest create $CI_APP_REPO:$VERSION_MAJ-docker $CI_MANIFEST_LIST_DOCKER
docker manifest create $CI_APP_REPO:$VERSION_MAJ-docker-root $CI_MANIFEST_LIST_DOCKER_ROOT
if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ \
$CI_APP_REPO:$CI_APP_TAG-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ-root \
$CI_APP_REPO:$CI_APP_TAG-root-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ-docker \
$CI_APP_REPO:$CI_APP_TAG-docker-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ-docker-root \
$CI_APP_REPO:$CI_APP_TAG-docker-root-linux-arm64v8
fi
docker manifest push $CI_APP_REPO:$VERSION_MAJ
docker manifest push $CI_APP_REPO:$VERSION_MAJ-root
docker manifest push $CI_APP_REPO:$VERSION_MAJ-docker
docker manifest push $CI_APP_REPO:$VERSION_MAJ-docker-root
fi
- if: $CI_COMMIT_BRANCH == "freeze-version" && $CI_PIPELINE_TRIGGERED
- geospatial/$R_VERSION.Dockerfile
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
trigger-latest-build:
extends: .post
stage: .post
needs: ["build-manifest:latest-linux-multiarch"]
before_script:
- apk upgrade --no-cache
- apk add --update --no-cache curl
script:
- curl -X POST -F token=$JUPYTERLAB_R_QGISPROCESS -F ref=main https://gitlab.b-data.ch/api/v4/projects/332/trigger/pipeline
rules:
- if: $CUDA_IMAGE
when: never
- if: $CI_COMMIT_BRANCH == "main" && $UPDATE_MODE != "true"
changes:
- geospatial/latest.Dockerfile
trigger-version-build:
extends: .post
stage: .post
needs: ["build-manifest:version-linux-multiarch"]
before_script:
- apk upgrade --no-cache
- apk add --update --no-cache curl
script:
- curl -X POST -F token=$JUPYTERLAB_R_QGISPROCESS -F ref=freeze-version https://gitlab.b-data.ch/api/v4/projects/332/trigger/pipeline
rules:
- if: $CUDA_IMAGE
when: never
- if: $CI_COMMIT_BRANCH == "freeze-version" && $CI_PIPELINE_TRIGGERED
changes:
- geospatial/$R_VERSION.Dockerfile
trigger-latest-cuda-build:
extends: .post
stage: .post
needs: ["build-manifest:latest-linux-multiarch"]
before_script:
- apk upgrade --no-cache
- apk add --update --no-cache curl
script:
- curl -X POST -F token=$JUPYTERLAB_CUDA_R_QGISPROCESS -F ref=main https://gitlab.b-data.ch/api/v4/projects/333/trigger/pipeline
rules:
- if: $CI_COMMIT_BRANCH == "main" && $UPDATE_MODE != "true" && $CUDA_IMAGE
changes:
- geospatial/latest.Dockerfile
trigger-version-cuda-build:
extends: .post
stage: .post
needs: ["build-manifest:version-linux-multiarch"]
before_script:
- apk upgrade --no-cache
- apk add --update --no-cache curl
script:
- curl -X POST -F token=$JUPYTERLAB_CUDA_R_QGISPROCESS -F ref=freeze-version https://gitlab.b-data.ch/api/v4/projects/333/trigger/pipeline
rules:
- if: $CI_COMMIT_BRANCH == "freeze-version" && $CI_PIPELINE_TRIGGERED && $CUDA_IMAGE
changes:
- geospatial/$R_VERSION.Dockerfile
build:latest-devtools-linux-amd64:
extends: .build
stage: build2
tags:
- arch:amd64
- os:linux
script:
- >
docker build --pull
--build-arg BUILD_ON_IMAGE=$CI_APP_REPO
--build-arg R_VERSION
--build-arg BUILD_START=$(date -uIseconds)
-f common/subtags/devtools/latest.Dockerfile .
- >
docker build
--build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG-devtools-linux-amd64
--build-arg BUILD_START=$(date -uIseconds)
-t $CI_APP_REPO:$CI_APP_TAG-devtools-root-linux-amd64
- >
docker build
--build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG-devtools-linux-amd64
--build-arg BUILD_START=$(date -uIseconds)
-t $CI_APP_REPO:$CI_APP_TAG-devtools-docker-linux-amd64
-t $CI_APP_REPO:latest-devtools-docker-linux-amd64
-f common/subtags/docker/Dockerfile .
- >
docker build
--build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG-devtools-docker-linux-amd64
--build-arg BUILD_START=$(date -uIseconds)
-t $CI_APP_REPO:$CI_APP_TAG-devtools-docker-root-linux-amd64
-t $CI_APP_REPO:latest-devtools-docker-root-linux-amd64
-f common/subtags/root/Dockerfile .
- |
docker push $CI_APP_REPO:$CI_APP_TAG-devtools-linux-amd64
docker push $CI_APP_REPO:latest-devtools-linux-amd64
docker push $CI_APP_REPO:$CI_APP_TAG-devtools-root-linux-amd64
docker push $CI_APP_REPO:latest-devtools-root-linux-amd64
docker push $CI_APP_REPO:$CI_APP_TAG-devtools-docker-linux-amd64
docker push $CI_APP_REPO:latest-devtools-docker-linux-amd64
docker push $CI_APP_REPO:$CI_APP_TAG-devtools-docker-root-linux-amd64
docker push $CI_APP_REPO:latest-devtools-docker-root-linux-amd64
- if: $CI_COMMIT_BRANCH == "main" && $UPDATE_MODE != "true" && $CI_BUILD_PLATFORMS =~ /(linux\/amd64)/
- common/subtags/devtools/latest.Dockerfile
build:latest-devtools-linux-arm64v8:
extends: .build
stage: build2
tags:
- arch:arm64/v8
- os:linux
script:
- >
docker build --pull
--build-arg BUILD_ON_IMAGE=$CI_APP_REPO
--build-arg R_VERSION
--build-arg BUILD_START=$(date -uIseconds)
-f common/subtags/devtools/latest.Dockerfile .
- >
docker build
--build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG-devtools-linux-arm64v8
--build-arg BUILD_START=$(date -uIseconds)
-t $CI_APP_REPO:$CI_APP_TAG-devtools-root-linux-arm64v8
-t $CI_APP_REPO:latest-devtools-root-linux-arm64v8
- >
docker build
--build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG-devtools-linux-arm64v8
--build-arg BUILD_START=$(date -uIseconds)
-t $CI_APP_REPO:$CI_APP_TAG-devtools-docker-linux-arm64v8
-t $CI_APP_REPO:latest-devtools-docker-linux-arm64v8
-f common/subtags/docker/Dockerfile .
- >
docker build
--build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG-devtools-docker-linux-arm64v8
--build-arg BUILD_START=$(date -uIseconds)
-t $CI_APP_REPO:$CI_APP_TAG-devtools-docker-root-linux-arm64v8
-t $CI_APP_REPO:latest-devtools-docker-root-linux-arm64v8
-f common/subtags/root/Dockerfile .
- |
docker push $CI_APP_REPO:$CI_APP_TAG-devtools-linux-arm64v8
docker push $CI_APP_REPO:latest-devtools-linux-arm64v8
docker push $CI_APP_REPO:$CI_APP_TAG-devtools-root-linux-arm64v8
docker push $CI_APP_REPO:latest-devtools-root-linux-arm64v8
docker push $CI_APP_REPO:$CI_APP_TAG-devtools-docker-linux-arm64v8
docker push $CI_APP_REPO:latest-devtools-docker-linux-arm64v8
docker push $CI_APP_REPO:$CI_APP_TAG-devtools-docker-root-linux-arm64v8
docker push $CI_APP_REPO:latest-devtools-docker-root-linux-arm64v8
- if: $CI_COMMIT_BRANCH == "main" && $UPDATE_MODE != "true" && $CI_BUILD_PLATFORMS =~ /(linux\/arm64\/v8)/
- common/subtags/devtools/latest.Dockerfile
build:version-devtools-linux-amd64:
extends: .build
stage: build2
tags:
- arch:amd64
- os:linux
script:
- >
docker build --pull
--build-arg BUILD_ON_IMAGE=$CI_APP_REPO
--build-arg BUILD_START=$(date -uIseconds)
-t $CI_APP_REPO:$CI_APP_TAG-devtools-linux-amd64
-f common/subtags/devtools/$R_VERSION.Dockerfile .
- >
docker build
--build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG-devtools-linux-amd64
--build-arg BUILD_START=$(date -uIseconds)
-t $CI_APP_REPO:$CI_APP_TAG-devtools-root-linux-amd64
-f common/subtags/root/Dockerfile .
- >
docker build
--build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG-devtools-linux-amd64
--build-arg BUILD_START=$(date -uIseconds)
-t $CI_APP_REPO:$CI_APP_TAG-devtools-docker-linux-amd64
-f common/subtags/docker/Dockerfile .
- >
docker build
--build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG-devtools-docker-linux-amd64
--build-arg BUILD_START=$(date -uIseconds)
-t $CI_APP_REPO:$CI_APP_TAG-devtools-docker-root-linux-amd64
-f common/subtags/root/Dockerfile .
- |
docker push $CI_APP_REPO:$CI_APP_TAG-devtools-linux-amd64
docker push $CI_APP_REPO:$CI_APP_TAG-devtools-root-linux-amd64
docker push $CI_APP_REPO:$CI_APP_TAG-devtools-docker-linux-amd64
docker push $CI_APP_REPO:$CI_APP_TAG-devtools-docker-root-linux-amd64
- if: $CI_COMMIT_BRANCH == "freeze-version" && $CI_PIPELINE_TRIGGERED && $CI_BUILD_PLATFORMS =~ /(linux\/amd64)/
- common/subtags/devtools/$R_VERSION.Dockerfile
build:version-devtools-linux-arm64v8:
extends: .build
stage: build2
tags:
- arch:arm64/v8
- os:linux
script:
- >
docker build --pull
--build-arg BUILD_ON_IMAGE=$CI_APP_REPO
--build-arg BUILD_START=$(date -uIseconds)
-t $CI_APP_REPO:$CI_APP_TAG-devtools-linux-arm64v8
-f common/subtags/devtools/$R_VERSION.Dockerfile .
- >
docker build
--build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG-devtools-linux-arm64v8
--build-arg BUILD_START=$(date -uIseconds)
-t $CI_APP_REPO:$CI_APP_TAG-devtools-root-linux-arm64v8
-f common/subtags/root/Dockerfile .
- >
docker build
--build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG-devtools-linux-arm64v8
--build-arg BUILD_START=$(date -uIseconds)
-t $CI_APP_REPO:$CI_APP_TAG-devtools-docker-linux-arm64v8
-f common/subtags/docker/Dockerfile .
- >
docker build
--build-arg BUILD_ON_IMAGE=$CI_APP_REPO:$CI_APP_TAG-devtools-docker-linux-arm64v8
--build-arg BUILD_START=$(date -uIseconds)
-t $CI_APP_REPO:$CI_APP_TAG-devtools-docker-root-linux-arm64v8
-f common/subtags/root/Dockerfile .
- |
docker push $CI_APP_REPO:$CI_APP_TAG-devtools-linux-arm64v8
docker push $CI_APP_REPO:$CI_APP_TAG-devtools-root-linux-arm64v8
docker push $CI_APP_REPO:$CI_APP_TAG-devtools-docker-linux-arm64v8
docker push $CI_APP_REPO:$CI_APP_TAG-devtools-docker-root-linux-arm64v8
- if: $CI_COMMIT_BRANCH == "freeze-version" && $CI_PIPELINE_TRIGGERED && $CI_BUILD_PLATFORMS =~ /(linux\/arm64\/v8)/
- common/subtags/devtools/$R_VERSION.Dockerfile
build-manifest:latest-devtools-linux-multiarch:
extends: .build
stage: build2
needs: ["build:latest-devtools-linux-amd64", "build:latest-devtools-linux-arm64v8"]
script:
- |
for i in $OS_ARCH; do
export CI_MANIFEST_LIST="$CI_MANIFEST_LIST $CI_APP_REPO:$CI_APP_TAG-devtools-$i"
export CI_MANIFEST_LIST_ROOT="$CI_MANIFEST_LIST_ROOT $CI_APP_REPO:$CI_APP_TAG-devtools-root-$i"
export CI_MANIFEST_LIST_DOCKER="$CI_MANIFEST_LIST_DOCKER $CI_APP_REPO:$CI_APP_TAG-devtools-docker-$i"
export CI_MANIFEST_LIST_DOCKER_ROOT="$CI_MANIFEST_LIST_DOCKER_ROOT $CI_APP_REPO:$CI_APP_TAG-devtools-docker-root-$i"
done
- |
docker manifest create $CI_APP_REPO:$CI_APP_TAG-devtools $CI_MANIFEST_LIST
docker manifest create $CI_APP_REPO:$CI_APP_TAG-devtools-root $CI_MANIFEST_LIST_ROOT
docker manifest create $CI_APP_REPO:$CI_APP_TAG-devtools-docker $CI_MANIFEST_LIST_DOCKER
docker manifest create $CI_APP_REPO:$CI_APP_TAG-devtools-docker-root $CI_MANIFEST_LIST_DOCKER_ROOT
if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then
docker manifest annotate --variant v8 $CI_APP_REPO:$CI_APP_TAG-devtools \
$CI_APP_REPO:$CI_APP_TAG-devtools-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$CI_APP_TAG-devtools-root \
$CI_APP_REPO:$CI_APP_TAG-devtools-root-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$CI_APP_TAG-devtools-docker \
$CI_APP_REPO:$CI_APP_TAG-devtools-docker-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$CI_APP_TAG-devtools-docker-root \
$CI_APP_REPO:$CI_APP_TAG-devtools-docker-root-linux-arm64v8
fi
docker manifest push $CI_APP_REPO:$CI_APP_TAG-devtools
docker manifest push $CI_APP_REPO:$CI_APP_TAG-devtools-root
docker manifest push $CI_APP_REPO:$CI_APP_TAG-devtools-docker
docker manifest push $CI_APP_REPO:$CI_APP_TAG-devtools-docker-root
docker manifest create $CI_APP_REPO:latest-devtools $CI_MANIFEST_LIST
docker manifest create $CI_APP_REPO:latest-devtools-root $CI_MANIFEST_LIST_ROOT
docker manifest create $CI_APP_REPO:latest-devtools-docker $CI_MANIFEST_LIST_DOCKER
docker manifest create $CI_APP_REPO:latest-devtools-docker-root $CI_MANIFEST_LIST_DOCKER_ROOT
if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then
docker manifest annotate --variant v8 $CI_APP_REPO:latest-devtools \
docker manifest annotate --variant v8 $CI_APP_REPO:latest-devtools-root \
docker manifest annotate --variant v8 $CI_APP_REPO:latest-devtools-docker \
$CI_APP_REPO:$CI_APP_TAG-devtools-docker-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:latest-devtools-docker-root \
$CI_APP_REPO:$CI_APP_TAG-devtools-docker-root-linux-arm64v8
docker manifest push $CI_APP_REPO:latest-devtools
docker manifest push $CI_APP_REPO:latest-devtools-root
docker manifest push $CI_APP_REPO:latest-devtools-docker
docker manifest push $CI_APP_REPO:latest-devtools-docker-root
docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN-devtools $CI_MANIFEST_LIST
docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN-devtools-root $CI_MANIFEST_LIST_ROOT
docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN-devtools-docker $CI_MANIFEST_LIST_DOCKER
docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN-devtools-docker-root $CI_MANIFEST_LIST_DOCKER_ROOT
if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN-devtools \
$CI_APP_REPO:$CI_APP_TAG-devtools-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN-devtools-root \
$CI_APP_REPO:$CI_APP_TAG-devtools-root-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN-devtools-docker \
$CI_APP_REPO:$CI_APP_TAG-devtools-docker-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN-devtools-docker-root \
$CI_APP_REPO:$CI_APP_TAG-devtools-docker-root-linux-arm64v8
fi
docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN-devtools
docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN-devtools-root
docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN-devtools-docker
docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN-devtools-docker-root
docker manifest create $CI_APP_REPO:$VERSION_MAJ-devtools $CI_MANIFEST_LIST
docker manifest create $CI_APP_REPO:$VERSION_MAJ-devtools-root $CI_MANIFEST_LIST_ROOT
docker manifest create $CI_APP_REPO:$VERSION_MAJ-devtools-docker $CI_MANIFEST_LIST_DOCKER
docker manifest create $CI_APP_REPO:$VERSION_MAJ-devtools-docker-root $CI_MANIFEST_LIST_DOCKER_ROOT
if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ-devtools \
$CI_APP_REPO:$CI_APP_TAG-devtools-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ-devtools-root \
$CI_APP_REPO:$CI_APP_TAG-devtools-root-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ-devtools-docker \
$CI_APP_REPO:$CI_APP_TAG-devtools-docker-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ-devtools-docker-root \
$CI_APP_REPO:$CI_APP_TAG-devtools-docker-root-linux-arm64v8
fi
docker manifest push $CI_APP_REPO:$VERSION_MAJ-devtools
docker manifest push $CI_APP_REPO:$VERSION_MAJ-devtools-root
docker manifest push $CI_APP_REPO:$VERSION_MAJ-devtools-docker
docker manifest push $CI_APP_REPO:$VERSION_MAJ-devtools-docker-root
- if: $CI_COMMIT_BRANCH == "main" && $UPDATE_MODE != "true"
- common/subtags/devtools/latest.Dockerfile
build-manifest:version-devtools-linux-multiarch:
extends: .build
stage: build2
needs: ["build:version-devtools-linux-amd64", "build:version-devtools-linux-arm64v8"]
script:
- |
for i in $OS_ARCH; do
export CI_MANIFEST_LIST="$CI_MANIFEST_LIST $CI_APP_REPO:$CI_APP_TAG-devtools-$i"
export CI_MANIFEST_LIST_ROOT="$CI_MANIFEST_LIST_ROOT $CI_APP_REPO:$CI_APP_TAG-devtools-root-$i"
export CI_MANIFEST_LIST_DOCKER="$CI_MANIFEST_LIST_DOCKER $CI_APP_REPO:$CI_APP_TAG-devtools-docker-$i"
export CI_MANIFEST_LIST_DOCKER_ROOT="$CI_MANIFEST_LIST_DOCKER_ROOT $CI_APP_REPO:$CI_APP_TAG-devtools-docker-root-$i"
done
- |
docker manifest create $CI_APP_REPO:$CI_APP_TAG-devtools $CI_MANIFEST_LIST
docker manifest create $CI_APP_REPO:$CI_APP_TAG-devtools-root $CI_MANIFEST_LIST_ROOT
docker manifest create $CI_APP_REPO:$CI_APP_TAG-devtools-docker $CI_MANIFEST_LIST_DOCKER
docker manifest create $CI_APP_REPO:$CI_APP_TAG-devtools-docker-root $CI_MANIFEST_LIST_DOCKER_ROOT
if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then
docker manifest annotate --variant v8 $CI_APP_REPO:$CI_APP_TAG-devtools \
$CI_APP_REPO:$CI_APP_TAG-devtools-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$CI_APP_TAG-devtools-root \
$CI_APP_REPO:$CI_APP_TAG-devtools-root-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$CI_APP_TAG-devtools-docker \
$CI_APP_REPO:$CI_APP_TAG-devtools-docker-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$CI_APP_TAG-devtools-docker-root \
$CI_APP_REPO:$CI_APP_TAG-devtools-docker-root-linux-arm64v8
fi
docker manifest push $CI_APP_REPO:$CI_APP_TAG-devtools
docker manifest push $CI_APP_REPO:$CI_APP_TAG-devtools-root
docker manifest push $CI_APP_REPO:$CI_APP_TAG-devtools-docker
docker manifest push $CI_APP_REPO:$CI_APP_TAG-devtools-docker-root
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
if [[ "$TAG_VERSION_MAJ_MIN" == "true" ]]; then
docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN-devtools $CI_MANIFEST_LIST
docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN-devtools-root $CI_MANIFEST_LIST_ROOT
docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN-devtools-docker $CI_MANIFEST_LIST_DOCKER
docker manifest create $CI_APP_REPO:$VERSION_MAJ_MIN-devtools-docker-root $CI_MANIFEST_LIST_DOCKER_ROOT
if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN-devtools \
$CI_APP_REPO:$CI_APP_TAG-devtools-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN-devtools-root \
$CI_APP_REPO:$CI_APP_TAG-devtools-root-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN-devtools-docker \
$CI_APP_REPO:$CI_APP_TAG-devtools-docker-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ_MIN-devtools-docker-root \
$CI_APP_REPO:$CI_APP_TAG-devtools-docker-root-linux-arm64v8
fi
docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN-devtools
docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN-devtools-root
docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN-devtools-docker
docker manifest push $CI_APP_REPO:$VERSION_MAJ_MIN-devtools-docker-root
fi
if [[ "$TAG_VERSION_MAJ" == "true" ]]; then
docker manifest create $CI_APP_REPO:$VERSION_MAJ-devtools $CI_MANIFEST_LIST
docker manifest create $CI_APP_REPO:$VERSION_MAJ-devtools-root $CI_MANIFEST_LIST_ROOT
docker manifest create $CI_APP_REPO:$VERSION_MAJ-devtools-docker $CI_MANIFEST_LIST_DOCKER
docker manifest create $CI_APP_REPO:$VERSION_MAJ-devtools-docker-root $CI_MANIFEST_LIST_DOCKER_ROOT
if echo $OS_ARCH | grep "linux-arm64v8" >/dev/null ; then
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ-devtools \
$CI_APP_REPO:$CI_APP_TAG-devtools-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ-devtools-root \
$CI_APP_REPO:$CI_APP_TAG-devtools-root-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ-devtools-docker \
$CI_APP_REPO:$CI_APP_TAG-devtools-docker-linux-arm64v8
docker manifest annotate --variant v8 $CI_APP_REPO:$VERSION_MAJ-devtools-docker-root \
$CI_APP_REPO:$CI_APP_TAG-devtools-docker-root-linux-arm64v8
fi
docker manifest push $CI_APP_REPO:$VERSION_MAJ-devtools
docker manifest push $CI_APP_REPO:$VERSION_MAJ-devtools-root
docker manifest push $CI_APP_REPO:$VERSION_MAJ-devtools-docker
docker manifest push $CI_APP_REPO:$VERSION_MAJ-devtools-docker-root
fi
- if: $CI_COMMIT_BRANCH == "freeze-version" && $CI_PIPELINE_TRIGGERED