| #!/bin/bash |
| |
| usage() { |
| me=`basename "$0"` |
| echo >&2 "Usage: $me [--help] [--tag TAG] [--gerrit-url URL] [--base-image IMAGE] [IMAGE]" |
| exit 1 |
| } |
| |
| while test $# -gt 0 ; do |
| case "$1" in |
| --help) |
| usage |
| ;; |
| |
| --tag) |
| shift |
| TAG=$1 |
| shift |
| ;; |
| |
| --gerrit-url) |
| shift |
| GERRIT_WAR_URL=$1 |
| shift |
| ;; |
| |
| --healthcheck-jar-url) |
| shift |
| HEALTHCHECK_JAR_URL=$1 |
| shift |
| ;; |
| |
| --base-image) |
| shift |
| BASE_IMAGE=$1 |
| shift |
| ;; |
| |
| *) |
| break |
| esac |
| done |
| |
| #Get list of images |
| source container-images/publish_list |
| IMAGES=$(get_image_list) |
| |
| if test -n "$GERRIT_WAR_URL"; then |
| BUILD_ARGS="--build-arg GERRIT_WAR_URL=$GERRIT_WAR_URL" |
| fi |
| |
| if test -n "$HEALTHCHECK_JAR_URL"; then |
| BUILD_ARGS="$BUILD_ARGS --build-arg HEALTHCHECK_JAR_URL=$HEALTHCHECK_JAR_URL" |
| fi |
| |
| export REV="$(git describe --always --dirty)" |
| |
| docker_build(){ |
| IMAGE=$1 |
| |
| docker build \ |
| --platform=linux/amd64 \ |
| --build-arg TAG=$REV \ |
| -t k8sgerrit/$IMAGE:$TAG \ |
| ./container-images/$IMAGE |
| |
| if test $? -ne 0; then |
| REPORT="$REPORT Failed: k8sgerrit/$IMAGE.\n" |
| RETURN_CODE=1 |
| else |
| REPORT="$REPORT Success: k8sgerrit/$IMAGE:$TAG\n" |
| fi |
| } |
| |
| docker_build_gerrit_base(){ |
| BUILD_ARGS="$BUILD_ARGS --build-arg TAG=$REV" |
| docker build \ |
| --platform=linux/amd64 \ |
| $BUILD_ARGS \ |
| -t gerrit-base:$REV \ |
| ./container-images/gerrit-base |
| if test $? -ne 0; then |
| echo -e "\n\nFailed to build gerrit-base image." |
| exit 1 |
| fi |
| |
| if test -z "$TAG"; then |
| export TAG="$(create_image_tag)" |
| fi |
| } |
| |
| create_image_tag(){ |
| GERRIT_VERSION=$(docker run --platform=linux/amd64 --entrypoint "/bin/sh" gerrit-base:$REV \ |
| -c "java -jar /var/gerrit/bin/gerrit.war version") |
| GERRIT_VERSION=$(echo "${GERRIT_VERSION##*$'\n'}" | cut -d' ' -f3 | tr -d '[:space:]') |
| echo "$REV-$GERRIT_VERSION" |
| } |
| |
| REPORT="Build results: \n" |
| RETURN_CODE=0 |
| |
| if test -n "$BASE_IMAGE"; then |
| BASE_BUILD_ARGS="--build-arg BASE_IMAGE=$BASE_IMAGE" |
| fi |
| |
| docker build $BASE_BUILD_ARGS --platform=linux/amd64 -t base:$REV ./container-images/base |
| if test $? -ne 0; then |
| echo -e "\n\nFailed to build base image." |
| exit 1 |
| fi |
| |
| if test $# -eq 0 ; then |
| docker_build_gerrit_base |
| for IMAGE in $IMAGES; do |
| docker_build $IMAGE |
| done |
| else |
| while test $# -gt 0 ; do |
| if [[ $1 = gerrit-* ]]; then |
| docker_build_gerrit_base |
| else |
| if test -z "$TAG"; then |
| TAG="$(git describe --always --dirty)-unknown" |
| fi |
| echo -e "\nNo Image containing Gerrit will be built." \ |
| "The Gerrit-version can thus not be determinded." \ |
| "Using tag $TAG\n" |
| fi |
| docker_build $1 |
| shift |
| done |
| fi |
| |
| echo -e "\n\n$REPORT" |
| exit $RETURN_CODE |