Automate images build and push to docker registry
[mbt-docker.git] / build-image.sh
1 #!/usr/bin/env sh
2
3 images="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"
6
7 repositories="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
11 usage() {
12 echo "Usage: ./$(basename $0) [-b <${images// /|}|all>] [-p <${repositories// /|}|all>] [-c]" 1>&2; exit 1;
13 }
14
15 build_all() {
16 for image in ${images}; do
17 make NAME=${image}
18 done
19 }
20
21 push_all() {
22 for repository in ${repositories}; do
23 make docker-push-registry NAME=${repository}
24 done
25 }
26
27 [ $# -eq 0 ] && usage
28 while getopts ":b:p:ch" option; do
29 case "${option}" in
30 b)
31 name=${OPTARG}
32 if [[ ${name} == "all" ]]; then
33 build_all
34 elif [[ -z "${images##*$name*}" ]]; then
35 make NAME=${name}
36 else
37 echo "Error: Unknown image name as option argument '${OPTARG}'" >&2;
38 usage
39 fi
40 ;;
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
54 ;;
55 :)
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;
62 usage
63 ;;
64 *|h)
65 usage
66 ;;
67 esac
68 done