k3s/build/release-tars/BUILD

348 lines
8.2 KiB
Python
Raw Normal View History

package(default_visibility = ["//visibility:public"])
2019-02-09 02:05:06 +00:00
load(
"//build:platforms.bzl",
"CLIENT_PLATFORMS",
"NODE_PLATFORMS",
"SERVER_PLATFORMS",
"TEST_PLATFORMS",
"for_platforms",
"go_platform_constraint",
)
load("@io_k8s_repo_infra//defs:build.bzl", "release_filegroup")
load("@io_k8s_repo_infra//defs:pkg.bzl", "pkg_tar")
load("//staging:repos_generated.bzl", "staging_repos")
2019-02-14 00:42:38 +00:00
# Bazel doesn't make the output filename
# (such as kubernetes-server-{OS}-{ARCH}.tar.gz) configurable, so we instead
# create rules for all platforms and tag them manual.
# We then select the correct set of platform-specific tarballs in this filegroup
# using a select() statement.
# Thus the release-tars target always selects the correct set of tarballs
# for the configured platform being built.
release_filegroup(
name = "release-tars",
conditioned_srcs = for_platforms(
for_all = [
":kubernetes.tar.gz",
":kubernetes-src.tar.gz",
],
for_client = [":kubernetes-client-{OS}-{ARCH}.tar.gz"],
for_node = [":kubernetes-node-{OS}-{ARCH}.tar.gz"],
for_server = [
":kubernetes-server-{OS}-{ARCH}.tar.gz",
":kubernetes-manifests.tar.gz",
],
for_test = [
":kubernetes-test-portable.tar.gz",
":kubernetes-test-{OS}-{ARCH}.tar.gz",
# TODO(ixdy): remove once the "mondo-test" tarball is deprecated.
# It isn't really mondo under Bazel anyway.
":kubernetes-test.tar.gz",
],
),
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
)
config_setting(
name = "package_src",
values = {
"define": "PACKAGE_SRC=true",
},
visibility = ["//visibility:private"],
)
genrule(
name = "kubernetes-src-readme",
outs = ["README-src.txt"],
cmd = """
echo For build efficiency, the src was not included in this release.>$@
echo The full source code can be viewed at >>$@
echo -n https://github.com/kubernetes/kubernetes/tree/ >>$@
grep ^STABLE_BUILD_GIT_COMMIT bazel-out/stable-status.txt | cut -d' ' -f2 >>$@
""",
stamp = 1,
)
pkg_tar(
name = "kubernetes-src",
srcs = select({
":package_src": ["//:all-srcs"],
"//conditions:default": ["README-src.txt"],
}),
extension = "tar.gz",
package_dir = "kubernetes",
strip_prefix = select({
":package_src": "//",
"//conditions:default": ".",
}),
symlinks = {
"kubernetes/vendor/%s" % repo: "../../staging/src/%s" % repo
for repo in staging_repos
},
2019-02-12 00:12:23 +00:00
tags = [
"manual",
"no-cache",
],
)
# Included in node and server tarballs.
filegroup(
name = "license-targets",
srcs = [
":kubernetes-src.tar.gz",
"//:Godeps/LICENSES",
],
visibility = ["//visibility:private"],
)
pkg_tar(
name = "_client-bin",
srcs = ["//build:client-targets"],
mode = "0755",
package_dir = "client/bin",
2019-02-12 00:12:23 +00:00
tags = [
"manual",
"no-cache",
],
visibility = ["//visibility:private"],
)
2019-02-09 02:05:06 +00:00
[[pkg_tar(
name = "kubernetes-client-%s-%s" % (os, arch),
extension = "tar.gz",
package_dir = "kubernetes",
2019-02-12 00:12:23 +00:00
tags = [
"manual",
"no-cache",
],
2019-02-09 02:05:06 +00:00
deps = select({go_platform_constraint(os, arch): [":_client-bin"]}),
) for arch in archs] for os, archs in CLIENT_PLATFORMS.items()]
pkg_tar(
name = "_node-bin",
srcs = [
"//build:client-targets",
"//build:node-targets",
],
mode = "0755",
package_dir = "node/bin",
2019-02-12 00:12:23 +00:00
tags = [
"manual",
"no-cache",
],
visibility = ["//visibility:private"],
)
2019-02-09 02:05:06 +00:00
[[pkg_tar(
name = "kubernetes-node-%s-%s" % (os, arch),
srcs = [":license-targets"],
extension = "tar.gz",
mode = "0644",
package_dir = "kubernetes",
2019-02-12 00:12:23 +00:00
tags = [
"manual",
"no-cache",
],
2019-02-09 02:05:06 +00:00
deps = select({go_platform_constraint(os, arch): [":_node-bin"]}),
) for arch in archs] for os, archs in NODE_PLATFORMS.items()]
pkg_tar(
name = "_server-bin",
srcs = [
"//build:client-targets",
"//build:docker-artifacts",
"//build:node-targets",
"//build:server-targets",
],
mode = "0755",
package_dir = "server/bin",
2019-02-12 00:12:23 +00:00
tags = [
"manual",
"no-cache",
],
visibility = ["//visibility:private"],
)
genrule(
name = "dummy",
outs = [".dummy"],
cmd = "touch $@",
visibility = ["//visibility:private"],
)
# Some of the startup scripts fail if there isn't an addons/ directory in the server tarball.
pkg_tar(
name = "_server-addons",
srcs = [
":.dummy",
],
package_dir = "addons",
2019-02-12 00:12:23 +00:00
tags = [
"manual",
"no-cache",
],
visibility = ["//visibility:private"],
)
2019-02-09 02:05:06 +00:00
[[pkg_tar(
name = "kubernetes-server-%s-%s" % (os, arch),
srcs = [":license-targets"],
extension = "tar.gz",
mode = "0644",
package_dir = "kubernetes",
2019-02-12 00:12:23 +00:00
tags = [
"manual",
"no-cache",
],
2019-02-09 02:05:06 +00:00
deps = select({
go_platform_constraint(os, arch): [
":_server-addons",
":_server-bin",
],
}),
) for arch in archs] for os, archs in SERVER_PLATFORMS.items()]
2019-02-14 07:45:19 +00:00
# The mondo test tarball is deprecated.
pkg_tar(
2019-02-14 07:45:19 +00:00
name = "_test-mondo-bin",
srcs = ["//build:test-targets"],
mode = "0755",
2019-02-09 02:05:06 +00:00
package_dir = select(for_platforms(
for_test = "platforms/{OS}/{ARCH}",
)),
2019-02-12 00:12:23 +00:00
tags = [
"manual",
"no-cache",
],
visibility = ["//visibility:private"],
)
2019-02-14 07:45:19 +00:00
genrule(
name = "kubernetes-test-mondo-deprecation",
outs = ["DEPRECATION_NOTICE"],
cmd = """cat <<EOF >$@
The mondo test tarball containing binaries for all platforms is
DEPRECATED as of Kubernetes 1.14.
Users of this tarball should migrate to using the platform-specific
tarballs in combination with the "portable" tarball which contains
scripts, test images, and other manifests.
For more details, please see KEP
sig-testing/20190118-breaking-apart-the-kubernetes-test-tarball.
EOF
""",
visibility = ["//visibility:private"],
)
# The mondo test tarball is deprecated.
# This one was never really correct, anyway, since we can't include
# binaries from multiple platforms in a single tarball.
pkg_tar(
name = "kubernetes-test",
2019-02-14 07:45:19 +00:00
srcs = [
":kubernetes-test-mondo-deprecation",
"//build:test-portable-targets",
],
extension = "tar.gz",
package_dir = "kubernetes",
remap_paths = {
"build/release-tars/DEPRECATION_NOTICE": "DEPRECATION_NOTICE",
},
strip_prefix = "//",
2019-02-12 00:12:23 +00:00
tags = [
"manual",
"no-cache",
],
2019-02-09 02:05:06 +00:00
deps = select(for_platforms(
for_test = [":_test-mondo-bin"],
)),
2019-02-14 07:45:19 +00:00
)
pkg_tar(
name = "kubernetes-test-portable",
srcs = ["//build:test-portable-targets"],
extension = "tar.gz",
package_dir = "kubernetes",
strip_prefix = "//",
2018-02-27 01:01:13 +00:00
tags = ["no-cache"],
2019-02-14 07:45:19 +00:00
)
pkg_tar(
name = "_test-bin",
srcs = ["//build:test-targets"],
mode = "0755",
package_dir = "test/bin",
2019-02-12 00:12:23 +00:00
tags = [
"manual",
"no-cache",
],
2019-02-14 07:45:19 +00:00
visibility = ["//visibility:private"],
)
2019-02-09 02:05:06 +00:00
[[pkg_tar(
name = "kubernetes-test-%s-%s" % (os, arch),
2019-02-14 07:45:19 +00:00
extension = "tar.gz",
package_dir = "kubernetes",
strip_prefix = "//",
2019-02-12 00:12:23 +00:00
tags = [
"manual",
"no-cache",
],
2019-02-09 02:05:06 +00:00
deps = select({go_platform_constraint(os, arch): [":_test-bin"]}),
) for arch in archs] for os, archs in TEST_PLATFORMS.items()]
pkg_tar(
name = "_full_server",
srcs = [
":kubernetes-manifests.tar.gz",
],
package_dir = "server",
2019-02-12 00:12:23 +00:00
tags = [
"manual",
"no-cache",
],
visibility = ["//visibility:private"],
)
pkg_tar(
name = "kubernetes",
srcs = [
"//:Godeps/LICENSES",
"//:README.md",
"//:version",
"//cluster:all-srcs",
"//docs:all-srcs",
"//hack/lib:all-srcs",
],
extension = "tar.gz",
package_dir = "kubernetes",
strip_prefix = "//",
2018-02-27 01:01:13 +00:00
tags = ["no-cache"],
deps = [
":_full_server",
],
)
pkg_tar(
name = "kubernetes-manifests",
extension = "tar.gz",
2018-02-27 01:01:13 +00:00
tags = ["no-cache"],
deps = [
"//cluster:manifests",
],
)