2020-04-02 13:03:15 +02:00
#!/usr/bin/env bash
#
2021-07-24 20:52:56 +02:00
# Copyright 2019-2021 by Vegard IT GmbH, Germany, https://vegardit.com
2020-04-02 13:03:15 +02:00
# SPDX-License-Identifier: Apache-2.0
#
2020-12-05 21:58:04 +01:00
# Author: Sebastian Thomschke, Vegard IT GmbH
2020-04-02 13:03:15 +02:00
#
# https://github.com/vegardit/docker-openldap
2020-08-24 20:11:52 +02:00
2021-07-24 20:52:56 +02:00
shared_lib = " $( dirname $0 ) /.shared "
[ -e " $shared_lib " ] || curl -sSf https://raw.githubusercontent.com/vegardit/docker-shared/v1/download.sh?_= $( date +%s) | bash -s v1 " $shared_lib " || exit 1
source " $shared_lib /lib/build-image-init.sh "
2020-08-24 20:11:52 +02:00
2020-12-05 21:58:04 +01:00
#################################################
2020-08-24 20:11:52 +02:00
# specify target docker registry/repo
2020-12-05 21:58:04 +01:00
#################################################
2020-08-24 20:11:52 +02:00
docker_registry = ${ DOCKER_REGISTRY :- docker .io }
2020-12-05 21:58:04 +01:00
image_repo = ${ DOCKER_IMAGE_REPO :- vegardit /openldap }
2023-06-02 11:59:36 +02:00
base_image_name = ${ DOCKER_BASE_IMAGE :- debian : bullseye -slim }
2021-04-13 15:30:53 +02:00
base_image_tag = ${ base_image_name #* : }
2021-07-24 20:52:56 +02:00
image_name = $image_repo :latest
2020-12-05 21:58:04 +01:00
#################################################
2020-08-24 20:11:52 +02:00
# build the image
2020-12-05 21:58:04 +01:00
#################################################
echo " Building docker image [ $image_name ]... "
if [ [ $OSTYPE = = "cygwin" || $OSTYPE = = "msys" ] ] ; then
project_root = $( cygpath -w " $project_root " )
fi
2021-07-24 20:52:56 +02:00
docker pull $base_image_name
DOCKER_BUILDKIT = 1 docker build " $project_root " \
--file "image/Dockerfile" \
--progress= plain \
--build-arg INSTALL_SUPPORT_TOOLS = ${ INSTALL_SUPPORT_TOOLS :- 0 } \
2020-08-24 20:11:52 +02:00
` # using the current date as value for BASE_LAYER_CACHE_KEY, i.e. the base layer cache (that holds system packages with security updates) will be invalidate once per day` \
2020-12-05 21:58:04 +01:00
--build-arg BASE_LAYER_CACHE_KEY = $base_layer_cache_key \
2021-04-13 15:30:53 +02:00
--build-arg BASE_IMAGE = $base_image_name \
2020-08-22 15:04:38 +02:00
--build-arg BUILD_DATE = $( date -u +"%Y-%m-%dT%H:%M:%SZ" ) \
2020-04-02 13:03:15 +02:00
--build-arg GIT_BRANCH = " ${ GIT_BRANCH :- $( git rev-parse --abbrev-ref HEAD) } " \
--build-arg GIT_COMMIT_DATE = " $( date -d @$( git log -1 --format= '%at' ) --utc +'%Y-%m-%d %H:%M:%S UTC' ) " \
--build-arg GIT_COMMIT_HASH = " $( git rev-parse --short HEAD) " \
--build-arg GIT_REPO_URL = " $( git config --get remote.origin.url) " \
2020-12-05 21:58:04 +01:00
-t $image_name \
2020-04-02 13:03:15 +02:00
" $@ "
2020-08-24 20:11:52 +02:00
2020-12-05 21:58:04 +01:00
#################################################
2021-07-24 20:52:56 +02:00
# determine effective OpenLDAP version
2020-12-05 21:58:04 +01:00
#################################################
2020-08-24 20:11:52 +02:00
# LC_ALL=en_US.utf8 -> workaround for "grep: -P supports only unibyte and UTF-8 locales"
2021-07-24 20:52:56 +02:00
ldap_version = $( docker run --rm $image_name dpkg -s slapd | LC_ALL = en_US.utf8 grep -oP 'Version: \K\d+\.\d+\.\d+' )
echo " ldap_version= $ldap_version "
2020-04-02 13:03:15 +02:00
2020-08-24 20:11:52 +02:00
2020-12-05 21:58:04 +01:00
#################################################
2021-07-24 20:52:56 +02:00
# apply tags
2020-12-05 21:58:04 +01:00
#################################################
2023-06-02 11:59:36 +02:00
declare -a tags = ( )
2021-07-24 20:52:56 +02:00
tags += ( $image_name ) # :latest
tags += ( $image_repo :${ ldap_version } ) # :2.4.47
tags += ( $image_repo :${ ldap_version %.* } .x) # :2.4.x
tags += ( $image_repo :${ ldap_version %%.* } .x) # :2.x
2020-12-05 21:58:04 +01:00
2021-07-24 20:52:56 +02:00
for tag in ${ tags [@] } ; do
docker image tag $image_name $tag
done
2020-08-24 20:11:52 +02:00
2020-12-05 21:58:04 +01:00
#################################################
2021-07-24 20:52:56 +02:00
# perform security audit
2020-12-05 21:58:04 +01:00
#################################################
2021-07-24 20:52:56 +02:00
bash " $shared_lib /cmd/audit-image.sh " $image_name
2020-08-24 20:11:52 +02:00
2020-12-05 21:58:04 +01:00
#################################################
2021-07-24 20:52:56 +02:00
# push image with tags to remote docker image registry
2020-12-05 21:58:04 +01:00
#################################################
2021-07-24 20:52:56 +02:00
if [ [ " ${ DOCKER_PUSH :- 0 } " = = "1" ] ] ; then
for tag in ${ tags [@] } ; do
docker push $docker_registry /$tag
done
fi