#!/bin/sh -e # Build the backend Docker image. # Requires CI_PROJECT_DIR and CI_REGISTRY_IMAGE to be set. # VERSION defaults to latest. # Will automatically login to a registry if CI_REGISTRY, CI_REGISTRY_USER and CI_REGISTRY_PASSWORD are set. # Will only push an image if $CI_REGISTRY is set. TAG_SUFFIX=$1 if [ -z "$VERSION" ]; then #Ensure this is not a base tag case $CI_COMMIT_TAG in base-*) echo build can only be used with non-base tags. exit 1;; esac VERSION=${CI_COMMIT_TAG:-latest} fi if [ -n "$TAG_SUFFIX" ]; then # Apply optional suffix to image version VERSION="${VERSION}${TAG_SUFFIX}" fi if [ -z "$VERSION" -o -z "$CI_PROJECT_DIR" -o -z "$CI_REGISTRY_IMAGE" ]; then echo Missing environment variables exit 1 fi if [ -n "$CI_REGISTRY" -a -n "$CI_REGISTRY_USER" -a -n "$CI_REGISTRY_PASSWORD" ]; then echo Logging in to container registry… echo $CI_REGISTRY_PASSWORD | docker login -u $CI_REGISTRY_USER --password-stdin $CI_REGISTRY fi IMAGE_TAG="$CI_REGISTRY_IMAGE:$VERSION" cd $CI_PROJECT_DIR docker pull "$CI_REGISTRY_IMAGE/base:latest" docker build . -t "$IMAGE_TAG" if [ -n "$CI_REGISTRY" ]; then docker push "$IMAGE_TAG" fi # Also publish on Teklia repository if [ -n "$CI_COMMIT_TAG" -a -n "$TEKLIA_REGISTRY" ]; then echo "$TEKLIA_PASSWORD" | docker login -u "$TEKLIA_USERNAME" --password-stdin "$TEKLIA_REGISTRY" IMAGE_TAG_TEKLIA="$TEKLIA_REGISTRY/$CI_PROJECT_PATH:$VERSION" docker tag "$IMAGE_TAG" "$IMAGE_TAG_TEKLIA" docker push "$IMAGE_TAG_TEKLIA" fi