From e0bcfd29ac919f9c602daa1bf6b1f86e474b1553 Mon Sep 17 00:00:00 2001 From: Sen Lu Date: Tue, 10 Oct 2017 14:52:07 -0700 Subject: [PATCH] Try to use bazel to build/push kubemark image --- cluster/BUILD | 1 + cluster/images/kubemark/BUILD | 33 +++++++++++++++++++++++++++++++++ test/kubemark/start-kubemark.sh | 25 ++++++++++++++++++++++++- 3 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 cluster/images/kubemark/BUILD diff --git a/cluster/BUILD b/cluster/BUILD index aaad5d31a02..9c11052e7d4 100644 --- a/cluster/BUILD +++ b/cluster/BUILD @@ -19,6 +19,7 @@ filegroup( "//cluster/images/etcd/attachlease:all-srcs", "//cluster/images/etcd/rollback:all-srcs", "//cluster/images/hyperkube:all-srcs", + "//cluster/images/kubemark:all-srcs", "//cluster/lib:all-srcs", "//cluster/saltbase:all-srcs", ], diff --git a/cluster/images/kubemark/BUILD b/cluster/images/kubemark/BUILD new file mode 100644 index 00000000000..ff6c424ff7d --- /dev/null +++ b/cluster/images/kubemark/BUILD @@ -0,0 +1,33 @@ +package(default_visibility = ["//visibility:public"]) + +load("@io_bazel_rules_docker//docker:docker.bzl", "docker_build", "docker_push") + +docker_build( + name = "image", + base = "@official_busybox//image", + entrypoint = ["/kubemark"], + files = ["//cmd/kubemark"], +) + +docker_push( + name = "push", + image = ":image", + registry = "gcr.io", + repository = "$(PROJECT)/kubemark", + stamp = True, + tag = "latest", +) + +filegroup( + name = "package-srcs", + srcs = glob(["**"]), + tags = ["automanaged"], + visibility = ["//visibility:private"], +) + +filegroup( + name = "all-srcs", + srcs = [":package-srcs"], + tags = ["automanaged"], + visibility = ["//visibility:public"], +) diff --git a/test/kubemark/start-kubemark.sh b/test/kubemark/start-kubemark.sh index a7dc64a3ebf..18794f0f67c 100755 --- a/test/kubemark/start-kubemark.sh +++ b/test/kubemark/start-kubemark.sh @@ -214,6 +214,25 @@ function create-and-upload-hollow-node-image { echo "Created and uploaded the kubemark hollow-node image to docker registry." } +# Use bazel rule to create a docker image for hollow-node and upload +# it to the appropriate docker container registry for the cloud provider. +function create-and-upload-hollow-node-image-bazel { + RETRIES=3 + for attempt in $(seq 1 ${RETRIES}); do + if ! bazel run //cluster/images/kubemark:push --define PROJECT="${PROJECT}"; then + if [[ $((attempt)) -eq "${RETRIES}" ]]; then + echo "${color_red}Image push failed. Exiting.${color_norm}" + exit 1 + fi + echo -e "${color_yellow}Make attempt $(($attempt)) failed. Retrying.${color_norm}" >& 2 + sleep $(($attempt * 5)) + else + break + fi + done + echo "Created and uploaded the kubemark hollow-node image to docker registry." +} + # Generate secret and configMap for the hollow-node pods to work, prepare # manifests of the hollow-node and heapster replication controllers from # templates, and finally create these resources through kubectl. @@ -439,7 +458,11 @@ start-master-components # Setup for hollow-nodes. echo "" echo -e "${color_yellow}STARTING SETUP FOR HOLLOW-NODES${color_norm}" -create-and-upload-hollow-node-image +if [[ "${KUBEMARK_BAZEL_BUILD:-}" =~ ^[yY]$ ]]; then + create-and-upload-hollow-node-image-bazel +else + create-and-upload-hollow-node-image +fi create-kube-hollow-node-resources wait-for-hollow-nodes-to-run-or-timeout