-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbuild_push_local.sh
93 lines (83 loc) · 2.25 KB
/
build_push_local.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#!/bin/bash
# Get commandline arguments
while (( "$#" )); do
case "$1" in
--docker-username)
dockerUsername="${2}"
shift
;;
--platform)
platform="$2"
shift
;;
--language)
language="$2"
shift
;;
--project)
project="${2}"
shift
;;
*)
shift
;;
esac
done
# Docker platform
if [[ $platform == "" ]]; then
# Default is amd
platform="amd64"
else
if [[ $platform != "amd64" && $platform != "arm64" ]]; then
echo "Platform [--platform] can either be 'amd64' or 'arm64'."
exit 1
fi
fi
# Programming language
if [[ $language != "golang" ]]; then
echo "Currently supported languages [--language] are 'golang'."
exit 1
fi
kafkaconsumerImageName="${project}-kafkaconsumer-${language}:latest"
httpserverImageName="${project}-httpserver-${language}:latest"
grpcserverImageName="${project}-grpcserver-${language}:latest"
simulatorImageName="${project}-simulator-${language}:latest"
latencymanagerImageName="${project}-latencymanager-${language}:latest"
####################
### Build & Push ###
####################
# kafkaconsumer
docker build \
--platform "linux/${platform}" \
--tag "${dockerUsername}/${kafkaconsumerImageName}" \
--build-arg="APP_NAME=kafkaconsumer" \
"./${language}/."
docker push "${dockerUsername}/${kafkaconsumerImageName}"
# httpserver
docker build \
--platform "linux/${platform}" \
--tag "${dockerUsername}/${httpserverImageName}" \
--build-arg="APP_NAME=httpserver" \
"./${language}/."
docker push "${dockerUsername}/${httpserverImageName}"
# grpcserver
docker build \
--platform "linux/${platform}" \
--tag "${dockerUsername}/${grpcserverImageName}" \
--build-arg="APP_NAME=grpcserver" \
"./${language}/."
docker push "${dockerUsername}/${grpcserverImageName}"
# simulator
docker build \
--platform "linux/${platform}" \
--tag "${dockerUsername}/${simulatorImageName}" \
--build-arg="APP_NAME=simulator" \
"./${language}/."
docker push "${dockerUsername}/${simulatorImageName}"
# latencymanager
docker build \
--platform "linux/${platform}" \
--tag "${dockerUsername}/${latencymanagerImageName}" \
--build-arg="APP_NAME=latencymanager" \
"./${language}/."
docker push "${dockerUsername}/${latencymanagerImageName}"