containers/.gitlab-ci.yml

65 lines
2.1 KiB
YAML

image: docker:20.10.16
variables:
# When you use the dind service, you must instruct Docker to talk with
# the daemon started inside of the service. The daemon is available
# with a network connection instead of the default
# /var/run/docker.sock socket. Docker 19.03 does this automatically
# by setting the DOCKER_HOST in
# https://github.com/docker-library/docker/blob/d45051476babc297257df490d22cbd806f1b11e4/19.03/docker-entrypoint.sh#L23-L29
#
# The 'docker' hostname is the alias of the service container as described at
# https://docs.gitlab.com/ee/ci/services/#accessing-the-services.
#
# Specify to Docker where to create the certificates. Docker
# creates them automatically on boot, and creates
# `/certs/client` to share between the service and job
# container, thanks to volume mount from config.toml
DOCKER_TLS_CERTDIR: "/certs"
services:
- name: docker:20.10.16-dind
# command: ["--registry-mirror", "http://maple.criugm.qc.ca:5000" ] # Specify the registry mirror to use
stages:
- build
.build_tpl:
stage: build
variables:
IMAGE: ${CI_REGISTRY_IMAGE}/${IMAGE_NAME}
rules:
- 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:
# 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
./docker/$IMAGE_NAME
- docker push --all-tags $IMAGE
build_all_dockers:
extends: .build_tpl
parallel:
matrix:
- IMAGE_NAME:
- datalad
- datalad-docker
- datalad-apptainer
- heudiconv
- deface
- dicom_indexer
# TODO: add deploy job for dicom indexer, if deployed with storescp