From 47f8879ea60062e6b462e07d5530d606736ffd01 Mon Sep 17 00:00:00 2001 From: bpinsard Date: Wed, 31 Jan 2024 11:06:25 -0500 Subject: [PATCH 1/4] try build matrix --- .gitlab-ci.yml | 59 ++++++++++++++------------------------------------ 1 file changed, 16 insertions(+), 43 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index d960585..40dad69 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -27,55 +27,28 @@ stages: .build_tpl: stage: build + variables: + IMAGE: ${CI_REGISTRY_IMAGE}/${IMAGE_NAME} + rules: + - changes: + - docker/${IMAGE_NAME}/**/* + - .gitlab-ci.yml script: - export IMAGE_TAG=$IMAGE:$CI_COMMIT_REF_SLUG - echo $CI_REGISTRY_USER $CI_REGISTRY $IMAGE_TAG - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker pull $IMAGE:latest || true - - docker build --cache-from $IMAGE:latest -t $IMAGE:$CI_COMMIT_SHA -t $IMAGE:$CI_COMMIT_SHORT_SHA -t $IMAGE_TAG -t $IMAGE:latest ./docker/datalad-docker + - docker build --cache-from $IMAGE:latest -t $IMAGE:$CI_COMMIT_SHA -t $IMAGE:$CI_COMMIT_SHORT_SHA -t $IMAGE_TAG -t $IMAGE:latest ./docker/$IMAGE_DOCKERFILE - docker push --all-tags $IMAGE -build_docker-datalad: - extends: .build_tpl - variables: - IMAGE: $CI_REGISTRY_IMAGE/docker-datalad - rules: - - changes: - - docker/datalad-docker/**/* - - .gitlab-ci.yml -build_datalad-apptainer: +build_all_dockers: extends: .build_tpl - variables: - IMAGE: $CI_REGISTRY_IMAGE/datalad-apptainer - rules: - - changes: - - docker/datalad-apptainer/**/* - - .gitlab-ci.yml - -build_heudiconv: - extends: .build_tpl - variables: - IMAGE: $CI_REGISTRY_IMAGE/heudiconv - rules: - - changes: - - docker/heudiconv/**/* - - .gitlab-ci.yml - -build_deface: - extends: .build_tpl - variables: - IMAGE: $CI_REGISTRY_IMAGE/deface - rules: - - changes: - - docker/deface/**/* - - .gitlab-ci.yml - -build_pydeface: - extends: .build_tpl - variables: - IMAGE: $CI_REGISTRY_IMAGE/pydeface - rules: - - changes: - - docker/pydeface/**/* - - .gitlab-ci.yml + parallel: + matrix: + - IMAGE_NAME: + - datalad-docker + - datalad-apptainer + - heudiconv + - deface + - dicom_indexer From 139da9a546c03a0e6ba23e4a6635d13cd4553d30 Mon Sep 17 00:00:00 2001 From: bpinsard Date: Wed, 31 Jan 2024 11:13:18 -0500 Subject: [PATCH 2/4] fix path to docker context --- .gitlab-ci.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 40dad69..4e5ecbd 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -38,10 +38,9 @@ stages: - echo $CI_REGISTRY_USER $CI_REGISTRY $IMAGE_TAG - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker pull $IMAGE:latest || true - - docker build --cache-from $IMAGE:latest -t $IMAGE:$CI_COMMIT_SHA -t $IMAGE:$CI_COMMIT_SHORT_SHA -t $IMAGE_TAG -t $IMAGE:latest ./docker/$IMAGE_DOCKERFILE + - docker build --cache-from $IMAGE:latest -t $IMAGE:$CI_COMMIT_SHA -t $IMAGE:$CI_COMMIT_SHORT_SHA -t $IMAGE_TAG -t $IMAGE:latest ./docker/$IMAGE_NAME - docker push --all-tags $IMAGE - build_all_dockers: extends: .build_tpl parallel: From 546b541f355c4d83ca4cf1287f498274188ca7a2 Mon Sep 17 00:00:00 2001 From: bpinsard Date: Wed, 31 Jan 2024 11:25:39 -0500 Subject: [PATCH 3/4] avoid duplicate pipelines, run on main and MR --- .gitlab-ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 4e5ecbd..55a9792 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -30,7 +30,8 @@ stages: variables: IMAGE: ${CI_REGISTRY_IMAGE}/${IMAGE_NAME} rules: - - changes: + - if: $CI_PIPELINE_SOURCE == "merge_request_event" || ($CI_PIPELINE_SOURCE == "push" && $CI_COMMIT_BRANCH==$CI_DEFAULT_BRANCH) + changes: - docker/${IMAGE_NAME}/**/* - .gitlab-ci.yml script: From f067e5de6bad4954db7e58289dd08d2a39297de4 Mon Sep 17 00:00:00 2001 From: bpinsard Date: Wed, 31 Jan 2024 11:37:45 -0500 Subject: [PATCH 4/4] fix tags: avoid MR to overwrite latest --- .gitlab-ci.yml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 55a9792..919358b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -35,11 +35,18 @@ stages: - docker/${IMAGE_NAME}/**/* - .gitlab-ci.yml script: - - export IMAGE_TAG=$IMAGE:$CI_COMMIT_REF_SLUG + # main is latest, MR create tag from branch name + - export IMAGE_TAG=$IMAGE:${CI_COMMIT_REF_SLUG/main/latest} - echo $CI_REGISTRY_USER $CI_REGISTRY $IMAGE_TAG - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker pull $IMAGE:latest || true - - docker build --cache-from $IMAGE:latest -t $IMAGE:$CI_COMMIT_SHA -t $IMAGE:$CI_COMMIT_SHORT_SHA -t $IMAGE_TAG -t $IMAGE:latest ./docker/$IMAGE_NAME + - > + docker build + --cache-from $IMAGE:latest + -t $IMAGE:$CI_COMMIT_SHA + -t $IMAGE:$CI_COMMIT_SHORT_SHA + -t $IMAGE_TAG + ./docker/$IMAGE_NAME - docker push --all-tags $IMAGE build_all_dockers: