Skip to content
Snippets Groups Projects
build-base.sh 1.22 KiB
#!/bin/sh -e
# Build the backend base image.
# Requires CI_PROJECT_DIR and CI_REGISTRY_IMAGE as well as either VERSION or CI_COMMIT_TAG.
# If VERSION is not set, CI_COMMIT_TAG must start with "base-" and will be used as "base-$VERSION".
# If CI_REGISTRY is set, will push the image to the specified registry.
# If CI_REGISTRY, CI_REGISTRY_USER and CI_REGISTRY_PASSWORD are set, will run `docker login` before pushing.

if [ -z "$VERSION" ]; then
	# Ensure this is a base tag, then tell sh to remove the base- prefix.
	case $CI_COMMIT_TAG in
		base-*)
			VERSION=${CI_COMMIT_TAG#base-};;
		*)
			echo build-base can only be used with 'base-*' tags.
			exit 1;;
	esac
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/base:$VERSION"
IMAGE_LATEST="$CI_REGISTRY_IMAGE/base:latest"
docker build --no-cache "$CI_PROJECT_DIR/base" -t "$IMAGE_TAG" -t "$IMAGE_LATEST"
docker push "$IMAGE_TAG"
docker push "$IMAGE_LATEST"