Automate images build and push to docker registry
[mbt-docker.git] / build-image.sh
CommitLineData
d2913546
JB
1#!/usr/bin/env sh
2
81986a8d
JB
3images="mbt-node14-java11-docker mbt-node16-java11-docker mbt-node18-java11-docker \
4 mbt-node14-java17-docker mbt-node16-java17-docker mbt-node18-java17-docker \
5 mbt-node14-java19-docker mbt-node16-java19-docker mbt-node18-java19-docker"
d2913546 6
3442a8df
JB
7repositories="mbt-node14-java11-docker mbt-node16-java11-docker mbt-node18-java11-docker \
8 mbt-node14-java17-docker mbt-node16-java17-docker mbt-node18-java17-docker \
9 mbt-node14-java19-docker mbt-node16-java19-docker mbt-node18-java19-docker"
10
d2913546 11usage() {
3442a8df 12 echo "Usage: ./$(basename $0) [-b <${images// /|}|all>] [-p <${repositories// /|}|all>] [-c]" 1>&2; exit 1;
d2913546
JB
13}
14
3442a8df 15build_all() {
d2913546
JB
16 for image in ${images}; do
17 make NAME=${image}
18 done
19}
20
3442a8df
JB
21push_all() {
22 for repository in ${repositories}; do
23 make docker-push-registry NAME=${repository}
24 done
25}
26
d2913546 27[ $# -eq 0 ] && usage
3442a8df 28while getopts ":b:p:ch" option; do
d2913546 29 case "${option}" in
3442a8df 30 b)
d2913546
JB
31 name=${OPTARG}
32 if [[ ${name} == "all" ]]; then
3442a8df 33 build_all
d2913546
JB
34 elif [[ -z "${images##*$name*}" ]]; then
35 make NAME=${name}
36 else
3442a8df 37 echo "Error: Unknown image name as option argument '${OPTARG}'" >&2;
d2913546 38 usage
d2913546
JB
39 fi
40 ;;
3442a8df
JB
41 p)
42 repository=${OPTARG}
43 if [[ ${repository} == "all" ]]; then
44 push_all
45 elif [[ -z "${repositories##*$repository*}" ]]; then
46 make docker-push-registry NAME=${repository}
47 else
48 echo "Error: Unknown repository name as option argument '${OPTARG}'" >&2;
49 usage
50 fi
51 ;;
52 c)
53 make dist-clean
76f7abe4 54 ;;
30a42bd5 55 :)
3442a8df
JB
56 echo "Error: Missing option argument for '-${OPTARG}'" >&2;
57 usage
58 ;;
59 \?)
60 # Invalid option
61 echo "Error: Unknown or invalid option for '-${OPTARG}'" >&2;
30a42bd5 62 usage
76f7abe4 63 ;;
d2913546
JB
64 *|h)
65 usage
66 ;;
67 esac
68done