Skip to content

Commit be394c6

Browse files
foxishmccheah
authored andcommitted
Improve the image building workflow (apache-spark-on-k8s#488)
1 parent a771a02 commit be394c6

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed

sbin/build-push-docker-images.sh

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
#!/usr/bin/env bash
2+
3+
# Licensed to the Apache Software Foundation (ASF) under one or more
4+
# contributor license agreements. See the NOTICE file distributed with
5+
# this work for additional information regarding copyright ownership.
6+
# The ASF licenses this file to You under the Apache License, Version 2.0
7+
# (the "License"); you may not use this file except in compliance with
8+
# the License. You may obtain a copy of the License at
9+
#
10+
# http://www.apache.org/licenses/LICENSE-2.0
11+
#
12+
# Unless required by applicable law or agreed to in writing, software
13+
# distributed under the License is distributed on an "AS IS" BASIS,
14+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
# See the License for the specific language governing permissions and
16+
# limitations under the License.
17+
#
18+
19+
# This script builds and pushes docker images when run from a release of Spark
20+
# with Kubernetes support.
21+
22+
declare -A path=( [spark-driver]=dockerfiles/driver/Dockerfile \
23+
[spark-executor]=dockerfiles/executor/Dockerfile \
24+
[spark-driver-py]=dockerfiles/driver-py/Dockerfile \
25+
[spark-executor-py]=dockerfiles/executor-py/Dockerfile \
26+
[spark-init]=dockerfiles/init-container/Dockerfile \
27+
[spark-shuffle]=dockerfiles/shuffle-service/Dockerfile \
28+
[spark-resource-staging-server]=dockerfiles/resource-staging-server/Dockerfile )
29+
30+
function build {
31+
docker build -t spark-base -f dockerfiles/spark-base/Dockerfile .
32+
for image in "${!path[@]}"; do
33+
docker build -t ${REPO}/$image:${TAG} -f ${path[$image]} .
34+
done
35+
}
36+
37+
38+
function push {
39+
for image in "${!path[@]}"; do
40+
docker push ${REPO}/$image:${TAG}
41+
done
42+
}
43+
44+
function usage {
45+
echo "Usage: ./sbin/build-push-docker-images.sh -r <repo> -t <tag> build"
46+
echo " ./sbin/build-push-docker-images.sh -r <repo> -t <tag> push"
47+
echo "for example: ./sbin/build-push-docker-images.sh -r docker.io/kubespark -t v2.2.0 push"
48+
}
49+
50+
if [[ "$@" = *--help ]] || [[ "$@" = *-h ]]; then
51+
usage
52+
exit 0
53+
fi
54+
55+
while getopts r:t: option
56+
do
57+
case "${option}"
58+
in
59+
r) REPO=${OPTARG};;
60+
t) TAG=${OPTARG};;
61+
esac
62+
done
63+
64+
if [ -z "$REPO" ] || [ -z "$TAG" ]; then
65+
usage
66+
else
67+
case "${@: -1}" in
68+
build) build;;
69+
push) push;;
70+
*) usage;;
71+
esac
72+
fi

0 commit comments

Comments
 (0)