smartgears-distribution/buildDistribution.sh

118 lines
3.6 KiB
Bash
Raw Permalink Normal View History

#!/bin/bash
set -e
ACCEPTED_JAVA_VERSIONS=(11 17)
2024-05-13 11:24:45 +02:00
NAME=smartgears-distribution
SMARTGEARS_VERSION=4.0.1-SNAPSHOT
JAVA_VERSION=11
TOMCAT_VERSION=10.1.19
PUSH_DOCKER=false
PUSH_HARBOR=false
LOGIN_HARBOR=false
MULTI_PLATFORM=false
2024-03-12 11:50:13 +01:00
2024-05-13 11:24:45 +02:00
IMAGE_VERSION=${SMARTGEARS_VERSION}-java${JAVA_VERSION}-tomcat${TOMCAT_VERSION}
BUILD_NAME=$NAME:$IMAGE_VERSION
echo "BUILD_NAME=$BUILD_NAME"
################################################################################
# Help #
################################################################################
Help()
{
# Display Help
echo "build and create docker image form smartgears distribution"
echo
2024-03-12 11:50:13 +01:00
echo "Syntax: buildDistribution [-g arg] [-j arg] [-p|u|h]"
echo "options:"
echo "-g arg specifies the maven [g]oal {package, install, deploy etc} default is package."
echo "-j arg specify [j]ava version (default is 11)"
echo " accepted version are: ${ACCEPTED_JAVA_VERSIONS[@]}"
echo "-m build docker image for [m]ultiple platform (must be suppported by local docker agent)"
echo "-p [p]ush image to d4science harbor (with login already done, or -l to login)"
echo "-l [l]ogin to d4science harbor"
echo "-u p[u]sh image to dockerhub (with docker login already done)"
echo "-h Print this [h]elp."
echo
2024-05-07 15:02:57 +02:00
echo "to build a multiplatform image and push on d4science harbor"
echo " ./buildDistribution.sh -m -l -p"
}
################################################################################
################################################################################
# Main program #
################################################################################
################################################################################
while getopts g:muplj:h flag
do
case "${flag}" in
g) GOAL=${OPTARG};;
m) MULTI_PLATFORM=true ;;
u) PUSH_DOCKER=true ;;
p) PUSH_HARBOR=true ;;
l) LOGIN_HARBOR=true ;;
j) if [[ ${ACCEPTED_JAVA_VERSIONS[@]} =~ ${OPTARG} ]]
then JAVA_VERSION=${OPTARG};
else echo "Invalid java version" && echo "accepted version are: ${ACCEPTED_JAVA_VERSIONS[@]}" && exit 1;
fi;;
h) Help
exit 0;;
*) echo "Invalid option"
exit 1;;
esac
done
2024-03-12 11:50:13 +01:00
2024-05-13 11:24:45 +02:00
if [ ${LOGIN_HARBOR} = true ];
then
./loginHarborHub.sh
fi
2024-05-07 15:02:57 +02:00
if [ -z $GOAL ];
2024-05-13 11:24:45 +02:00
then
mvn clean package;
else
mvn clean ${GOAL};
fi
2024-05-13 11:24:45 +02:00
if [ $MULTI_PLATFORM ];
then
echo "build multiplatform"
docker build -t $BUILD_NAME --build-arg="JAVA_VERSION=${JAVA_VERSION}" --build-arg="SMARTGEARS_VERSION=${SMARTGEARS_VERSION}" --platform=linux/amd64,linux/arm64,linux/arm/v7 .;
else
echo "build single platform"
docker build -t $BUILD_NAME --build-arg="JAVA_VERSION=${JAVA_VERSION}" --build-arg="SMARTGEARS_VERSION=${SMARTGEARS_VERSION}" . ;
fi
2024-05-13 11:24:45 +02:00
echo ">>> generated docker image ${IMAGE_VERSION}"
if [ ${PUSH_DOCKER} = true ];
then
DOCKER_NAME=d4science/$BUILD_NAME
2024-05-07 15:02:57 +02:00
docker tag $BUILD_NAME $DOCKER_NAME;
docker push $DOCKER_NAME;
echo ">>> pushed on dockerhub the image $DOCKER_NAME"
fi
2024-05-13 11:24:45 +02:00
if [ ${PUSH_HARBOR} = true ];
then
2024-05-07 15:02:57 +02:00
HARBOR_NAME=hub.dev.d4science.org/gcube/$BUILD_NAME
echo ">>> PUSHING on hub.dev.d4science.org the image $HARBOR_NAME"
2024-05-07 15:02:57 +02:00
docker tag $BUILD_NAME $HARBOR_NAME;
docker push $HARBOR_NAME;
echo ">>> pushed on hub.dev.d4science.org the image $HARBOR_NAME"
2024-03-12 11:50:13 +01:00
fi