blob: 33b196ae16bcd0b236b2b165bb3930efc7be2e4e [file] [log] [blame]
package(
default_visibility = [
"//tools/build_defs/docker:__subpackages__",
],
)
load("//tools/build_defs/docker:docker.bzl", "docker_build", "docker_bundle")
filegroup(
name = "srcs",
srcs = glob(["**"]) + [
"//tools/build_defs/docker/testdata/test:srcs",
],
)
genrule(
name = "gen",
outs = ["gen.out"],
cmd = "echo generated > $@",
)
docker_build(
name = "dummy_repository",
files = ["foo"],
repository = "gcr.io/dummy",
)
docker_build(
name = "no_data_path_image",
files = ["//tools/build_defs/docker/testdata/test:test-data"],
mode = "0644",
)
docker_build(
name = "data_path_image",
data_path = ".",
files = ["//tools/build_defs/docker/testdata/test:test-data"],
mode = "0644",
)
docker_build(
name = "absolute_data_path_image",
data_path = "/tools/build_defs",
files = ["//tools/build_defs/docker/testdata/test:test-data"],
mode = "0644",
)
docker_build(
name = "root_data_path_image",
data_path = "/",
files = ["//tools/build_defs/docker/testdata/test:test-data"],
mode = "0644",
)
docker_build(
name = "gen_image",
files = [":gen"],
mode = "0644",
)
docker_build(
name = "files_base",
files = ["foo"],
mode = "0644",
)
docker_build(
name = "files_with_files_base",
base = ":files_base",
files = ["bar"],
mode = "0644",
)
docker_build(
name = "tar_base",
tars = ["one.tar"],
)
docker_build(
name = "tar_with_tar_base",
base = ":tar_base",
tars = ["two.tar"],
)
docker_build(
name = "directory_with_tar_base",
base = ":tar_base",
directory = "/foo",
tars = ["two.tar"],
)
docker_build(
name = "workdir_with_tar_base",
base = ":tar_base",
workdir = "/tmp",
)
docker_build(
name = "files_with_tar_base",
base = ":tar_base",
files = ["bar"],
mode = "0644",
)
docker_build(
name = "tar_with_files_base",
base = ":files_base",
tars = ["two.tar"],
)
# TODO(mattmoor): Test scalar entrypoint
docker_build(
name = "base_with_entrypoint",
entrypoint = ["/bar"],
files = ["bar"],
mode = "0644",
ports = ["8080"],
tars = ["two.tar"],
)
# TODO(mattmoor): Test scalar cmd
docker_build(
name = "derivative_with_shadowed_cmd",
base = ":base_with_entrypoint",
cmd = ["shadowed-arg"],
files = ["foo"],
mode = "0644",
)
docker_build(
name = "derivative_with_cmd",
base = ":derivative_with_shadowed_cmd",
cmd = [
"arg1",
"arg2",
],
ports = ["80/tcp"],
tars = ["one.tar"],
)
docker_build(
name = "base_with_volume",
files = [
"bar",
"foo",
],
mode = "0644",
volumes = ["/logs"],
)
docker_build(
name = "derivative_with_volume",
base = ":base_with_volume",
volumes = [
"/asdf",
"/blah",
],
)
py_binary(
name = "extras_gen",
srcs = ["extras_gen.py"],
deps = ["//tools/build_defs/pkg:archive"],
)
genrule(
name = "extras",
outs = ["extras.tar"],
cmd = "$(location :extras_gen) $@",
tools = [":extras_gen"],
)
docker_build(
name = "generated_tarball",
tars = [
":extras",
],
)
docker_build(
name = "with_env",
base = ":base_with_volume",
env = {
"foo": "/asdf",
"bar": "blah blah blah",
},
)
docker_build(
name = "with_double_env",
base = ":with_env",
env = {
"baz": "${foo} $bar",
},
)
docker_build(
name = "with_label",
base = ":base_with_volume",
labels = {
"com.example.foo": "@blah.json",
"com.example.bar": "@blah.json",
"com.example.baz": "qux",
},
)
docker_build(
name = "with_double_label",
base = ":with_label",
labels = {
"com.example.qux": "@blah-blah.json",
},
)
[genrule(
name = "label-" + n,
outs = ["%s.json" % n],
cmd = "echo -n '{\"name\": \"%s\"}' > $@" % n,
) for n in [
"blah",
"blah-blah",
]]
docker_build(
name = "with_user",
base = ":base_with_volume",
user = "nobody",
)
docker_build(
name = "link_with_files_base",
base = ":files_base",
symlinks = {
"/usr/bin/java": "/bar",
},
)
# Trying with the 'top' file
py_binary(
name = "strip_top",
srcs = ["strip_top.py"],
deps = ["//tools/build_defs/pkg:archive"],
)
[genrule(
name = "notop_" + n,
srcs = [":" + n + ".tar"],
outs = ["notop_%s.tar" % n],
cmd = "$(location :strip_top) $< $@",
tools = [":strip_top"],
) for n in [
"files_base",
"tar_base",
"base_with_entrypoint",
"base_with_volume",
"generated_tarball",
]]
docker_build(
name = "notop_files_with_files_base",
base = ":notop_files_base",
files = ["bar"],
mode = "0644",
)
docker_build(
name = "notop_tar_with_tar_base",
base = ":notop_tar_base",
tars = ["two.tar"],
)
docker_build(
name = "notop_directory_with_tar_base",
base = ":notop_tar_base",
directory = "/foo",
tars = ["two.tar"],
)
docker_build(
name = "notop_files_with_tar_base",
base = ":notop_tar_base",
files = ["bar"],
mode = "0644",
)
docker_build(
name = "notop_workdir_with_tar_base",
base = ":notop_tar_base",
workdir = "/tmp",
)
docker_build(
name = "notop_tar_with_files_base",
base = ":notop_files_base",
tars = ["two.tar"],
)
docker_build(
name = "notop_derivative_with_shadowed_cmd",
base = ":notop_base_with_entrypoint",
cmd = ["shadowed-arg"],
files = ["foo"],
mode = "0644",
)
docker_build(
name = "notop_derivative_with_cmd",
base = ":notop_derivative_with_shadowed_cmd",
cmd = [
"arg1",
"arg2",
],
ports = ["80/tcp"],
tars = ["one.tar"],
)
docker_build(
name = "notop_derivative_with_volume",
base = ":notop_base_with_volume",
volumes = [
"/asdf",
"/blah",
],
)
docker_build(
name = "notop_with_env",
base = ":notop_base_with_volume",
env = {
"foo": "/asdf",
"bar": "blah blah blah",
},
)
docker_build(
name = "notop_with_double_env",
base = ":notop_with_env",
env = {
"baz": "${foo} $bar",
},
)
docker_build(
name = "notop_with_label",
base = ":notop_base_with_volume",
labels = {
"com.example.foo": "@blah.json",
"com.example.bar": "@blah.json",
"com.example.baz": "qux",
},
)
docker_build(
name = "notop_with_double_label",
base = ":notop_with_label",
labels = {
"com.example.qux": "@blah-blah.json",
},
)
docker_build(
name = "notop_with_user",
base = ":notop_base_with_volume",
user = "nobody",
)
docker_build(
name = "notop_link_with_files_base",
base = ":notop_files_base",
symlinks = {
"/usr/bin/java": "/bar",
},
)
docker_build(
name = "pause_based",
base = ":pause.tar",
files = ["foo"],
)
docker_bundle(
name = "bundle_test",
images = {
"docker.io/ubuntu:latest": ":base_with_entrypoint",
"us.gcr.io/google-appengine/base:fresh": ":link_with_files_base",
"gcr.io/google-containers/pause:2.0": ":with_double_env",
},
)
# Generate a dummy debian package with a test/ directory
py_binary(
name = "gen_deb",
srcs = ["gen_deb.py"],
)
genrule(
name = "generate_deb",
outs = ["gen.deb"],
cmd = "$(location :gen_deb) $@",
tools = [":gen_deb"],
)
# Bot gen.deb and test-data has a test directory, it should appear
# only once in the resulting layer.
docker_build(
name = "extras_with_deb",
data_path = ".",
debs = [":gen.deb"],
tars = ["extras.tar"],
)