blob: 114949721fc68fa3c511974ef3f7dfe133bc8d63 [file] [log] [blame]
giolekva1ef98852020-12-14 20:32:09 +04001__PUSH_TO_DEV_TMPL = """
2#!/bin/sh
3set -eE -o functrace
4# --- begin runfiles.bash initialization ---
5# Copy-pasted from Bazel's Bash runfiles library (tools/bash/runfiles/runfiles.bash).
6set -euo pipefail
7if [[ ! -d "\$${{RUNFILES_DIR:-/dev/null}}" && ! -f "\$${{RUNFILES_MANIFEST_FILE:-/dev/null}}" ]]; then
8 if [[ -f "\$$0.runfiles_manifest" ]]; then
9 export RUNFILES_MANIFEST_FILE="\$$0.runfiles_manifest"
10 elif [[ -f "\$$0.runfiles/MANIFEST" ]]; then
11 export RUNFILES_MANIFEST_FILE="\$$0.runfiles/MANIFEST"
12 elif [[ -f "\$$0.runfiles/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then
13 export RUNFILES_DIR="\$$0.runfiles"
14 fi
15fi
16if [[ -f "\$${{RUNFILES_DIR:-/dev/null}}/bazel_tools/tools/bash/runfiles/runfiles.bash" ]]; then
17 source "\$${{RUNFILES_DIR}}/bazel_tools/tools/bash/runfiles/runfiles.bash"
18elif [[ -f "\$${{RUNFILES_MANIFEST_FILE:-/dev/null}}" ]]; then
19 source "\$$(grep -m1 "^bazel_tools/tools/bash/runfiles/runfiles.bash " \
20 "\$$RUNFILES_MANIFEST_FILE" | cut -d ' ' -f 2-)"
21else
22 echo >&2 "ERROR: cannot find @bazel_tools//tools/bash/runfiles:runfiles.bash"
23 exit 1
24fi
25# --- end runfiles.bash initialization ---
26IMAGE="{registry}/{image}:{tag}"
27DOCKERFILE=\$$(rlocation __main__/{package}/{dockerfile})
28docker build \
29 --tag=\$$IMAGE \
30 --file=\$$DOCKERFILE \
31 \$$(dirname "\$$DOCKERFILE")
32docker push \$$IMAGE
33"""
34
35
36def docker_image(name, registry, image, tag, dockerfile, srcs, **kwargs):
37 native.genrule(
38 name = "%s.sh" % name,
39 executable = False,
40 outs = ["build_and_push.sh",],
41 cmd = """cat > $@ <<EOM
42%s
43EOM
44""" % __PUSH_TO_DEV_TMPL.format(
45 registry = registry,
46 image = image,
47 tag = tag,
48 dockerfile = dockerfile,
49 package = native.package_name(),
50 ))
51 native.sh_binary(
52 name = name,
53 srcs = ["build_and_push.sh",],
54 data = srcs + [dockerfile,],
55 deps = ["@bazel_tools//tools/bash/runfiles",])