blob: b45c72c4d19dc5a7a1b61a8722b620b9f5464953 [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
giolekvacf9a48b2020-12-16 19:17:48 +04007if [[ ! -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"
giolekva1ef98852020-12-14 20:32:09 +040014 fi
15fi
giolekvacf9a48b2020-12-16 19:17:48 +040016if [[ -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-)"
giolekva1ef98852020-12-14 20:32:09 +040021else
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}"
giolekvacf9a48b2020-12-16 19:17:48 +040027DOCKERFILE=\$$(rlocation __main__/{package}/{dockerfile})
28docker build \
29 --tag=\$$IMAGE \
30 --file=\$$DOCKERFILE \
31 \$$(dirname "\$$DOCKERFILE")
32docker push \$$IMAGE
giolekva1ef98852020-12-14 20:32:09 +040033"""
34
giolekva1ef98852020-12-14 20:32:09 +040035def docker_image(name, registry, image, tag, dockerfile, srcs, **kwargs):
36 native.genrule(
giolekva0c083372020-12-16 14:54:27 +040037 name = "%s.sh" % name,
38 executable = False,
39 outs = ["build_and_push.sh"],
40 cmd = """cat > $@ <<EOM
giolekva1ef98852020-12-14 20:32:09 +040041%s
42EOM
43""" % __PUSH_TO_DEV_TMPL.format(
giolekva0c083372020-12-16 14:54:27 +040044 registry = registry,
45 image = image,
46 tag = tag,
47 dockerfile = dockerfile,
48 package = native.package_name(),
49 ),
50 )
giolekva1ef98852020-12-14 20:32:09 +040051 native.sh_binary(
giolekva0c083372020-12-16 14:54:27 +040052 name = name,
53 srcs = ["build_and_push.sh"],
54 data = srcs + [dockerfile],
55 deps = ["@bazel_tools//tools/bash/runfiles"],
56 )