blob: b7f5f31112b311094dfd75e2d2e6c8032a0e32e2 [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
giolekva0c083372020-12-16 14:54:27 +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
giolekva0c083372020-12-16 14:54:27 +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 " \t "\\$$RUNFILES_MANIFEST_FILE" | cut -d ' ' -f 2-)"
giolekva1ef98852020-12-14 20:32:09 +040020else
21 echo >&2 "ERROR: cannot find @bazel_tools//tools/bash/runfiles:runfiles.bash"
22 exit 1
23fi
24# --- end runfiles.bash initialization ---
25IMAGE="{registry}/{image}:{tag}"
giolekva0c083372020-12-16 14:54:27 +040026DOCKERFILE=\\$$(rlocation __main__/{package}/{dockerfile})
27docker build --tag=\\$$IMAGE --file=\\$$DOCKERFILE \\$$(dirname "\\$$DOCKERFILE")
28docker push \\$$IMAGE
giolekva1ef98852020-12-14 20:32:09 +040029"""
30
giolekva1ef98852020-12-14 20:32:09 +040031def docker_image(name, registry, image, tag, dockerfile, srcs, **kwargs):
32 native.genrule(
giolekva0c083372020-12-16 14:54:27 +040033 name = "%s.sh" % name,
34 executable = False,
35 outs = ["build_and_push.sh"],
36 cmd = """cat > $@ <<EOM
giolekva1ef98852020-12-14 20:32:09 +040037%s
38EOM
39""" % __PUSH_TO_DEV_TMPL.format(
giolekva0c083372020-12-16 14:54:27 +040040 registry = registry,
41 image = image,
42 tag = tag,
43 dockerfile = dockerfile,
44 package = native.package_name(),
45 ),
46 )
giolekva1ef98852020-12-14 20:32:09 +040047 native.sh_binary(
giolekva0c083372020-12-16 14:54:27 +040048 name = name,
49 srcs = ["build_and_push.sh"],
50 data = srcs + [dockerfile],
51 deps = ["@bazel_tools//tools/bash/runfiles"],
52 )