Make release-tars multiplatform

This commit is contained in:
Jeff Grafton 2019-02-08 18:05:06 -08:00
parent bc316e3dc1
commit 4b50d9352f
2 changed files with 73 additions and 60 deletions

View File

@ -119,19 +119,19 @@ release_filegroup(
# KUBE_CLIENT_TARGETS # KUBE_CLIENT_TARGETS
release_filegroup( release_filegroup(
name = "client-targets", name = "client-targets",
srcs = [ conditioned_srcs = for_platforms(for_client = [
"//cmd/kubectl", "//cmd/kubectl",
], ]),
) )
# KUBE_NODE_TARGETS # KUBE_NODE_TARGETS
release_filegroup( release_filegroup(
name = "node-targets", name = "node-targets",
srcs = [ conditioned_srcs = for_platforms(for_node = [
"//cmd/kube-proxy", "//cmd/kube-proxy",
"//cmd/kubeadm", "//cmd/kubeadm",
"//cmd/kubelet", "//cmd/kubelet",
], ]),
) )
# KUBE_SERVER_TARGETS # KUBE_SERVER_TARGETS
@ -139,31 +139,35 @@ release_filegroup(
# since we include them in the actual build rule. # since we include them in the actual build rule.
release_filegroup( release_filegroup(
name = "server-targets", name = "server-targets",
srcs = [ conditioned_srcs = for_platforms(for_server = [
"//cluster/gce/gci/mounter", "//cluster/gce/gci/mounter",
"//cmd/cloud-controller-manager", "//cmd/cloud-controller-manager",
"//cmd/hyperkube", "//cmd/hyperkube",
"//cmd/kube-apiserver", "//cmd/kube-apiserver",
"//cmd/kube-controller-manager", "//cmd/kube-controller-manager",
"//cmd/kube-scheduler", "//cmd/kube-scheduler",
], ]),
) )
# kube::golang::test_targets # kube::golang::test_targets
filegroup( filegroup(
name = "test-targets", name = "test-targets",
srcs = [ srcs = select(for_platforms(
"//cmd/gendocs", for_server = [
"//cmd/genkubedocs", "//cmd/kubemark",
"//cmd/genman", "//test/e2e_node:e2e_node.test_binary",
"//cmd/genswaggertypedocs", ],
"//cmd/genyaml", for_test = [
"//cmd/kubemark", # TODO: server platforms only "//cmd/gendocs",
"//cmd/linkcheck", "//cmd/genkubedocs",
"//test/e2e:e2e.test_binary", "//cmd/genman",
"//test/e2e_node:e2e_node.test_binary", # TODO: server platforms only "//cmd/genswaggertypedocs",
"//vendor/github.com/onsi/ginkgo/ginkgo", "//cmd/genyaml",
], "//cmd/linkcheck",
"//test/e2e:e2e.test_binary",
"//vendor/github.com/onsi/ginkgo/ginkgo",
],
)),
) )
# KUBE_TEST_PORTABLE # KUBE_TEST_PORTABLE

View File

@ -1,5 +1,14 @@
package(default_visibility = ["//visibility:public"]) package(default_visibility = ["//visibility:public"])
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:build.bzl", "release_filegroup")
load("@io_k8s_repo_infra//defs:pkg.bzl", "pkg_tar") load("@io_k8s_repo_infra//defs:pkg.bzl", "pkg_tar")
@ -51,9 +60,6 @@ pkg_tar(
tags = ["no-cache"], tags = ["no-cache"],
) )
# FIXME: this should be configurable/auto-detected
PLATFORM_ARCH_STRING = "linux-amd64"
# Included in node and server tarballs. # Included in node and server tarballs.
filegroup( filegroup(
name = "license-targets", name = "license-targets",
@ -73,15 +79,13 @@ pkg_tar(
visibility = ["//visibility:private"], visibility = ["//visibility:private"],
) )
pkg_tar( [[pkg_tar(
name = "kubernetes-client-%s" % PLATFORM_ARCH_STRING, name = "kubernetes-client-%s-%s" % (os, arch),
extension = "tar.gz", extension = "tar.gz",
package_dir = "kubernetes", package_dir = "kubernetes",
tags = ["no-cache"], tags = ["no-cache"],
deps = [ deps = select({go_platform_constraint(os, arch): [":_client-bin"]}),
":_client-bin", ) for arch in archs] for os, archs in CLIENT_PLATFORMS.items()]
],
)
pkg_tar( pkg_tar(
name = "_node-bin", name = "_node-bin",
@ -95,17 +99,15 @@ pkg_tar(
visibility = ["//visibility:private"], visibility = ["//visibility:private"],
) )
pkg_tar( [[pkg_tar(
name = "kubernetes-node-%s" % PLATFORM_ARCH_STRING, name = "kubernetes-node-%s-%s" % (os, arch),
srcs = [":license-targets"], srcs = [":license-targets"],
extension = "tar.gz", extension = "tar.gz",
mode = "0644", mode = "0644",
package_dir = "kubernetes", package_dir = "kubernetes",
tags = ["no-cache"], tags = ["no-cache"],
deps = [ deps = select({go_platform_constraint(os, arch): [":_node-bin"]}),
":_node-bin", ) for arch in archs] for os, archs in NODE_PLATFORMS.items()]
],
)
pkg_tar( pkg_tar(
name = "_server-bin", name = "_server-bin",
@ -139,27 +141,30 @@ pkg_tar(
visibility = ["//visibility:private"], visibility = ["//visibility:private"],
) )
pkg_tar( [[pkg_tar(
name = "kubernetes-server-%s" % PLATFORM_ARCH_STRING, name = "kubernetes-server-%s-%s" % (os, arch),
srcs = [":license-targets"], srcs = [":license-targets"],
extension = "tar.gz", extension = "tar.gz",
mode = "0644", mode = "0644",
package_dir = "kubernetes", package_dir = "kubernetes",
tags = ["no-cache"], tags = ["no-cache"],
deps = [ deps = select({
":_server-addons", go_platform_constraint(os, arch): [
":_server-bin", ":_server-addons",
], ":_server-bin",
) ],
}),
) for arch in archs] for os, archs in SERVER_PLATFORMS.items()]
# The mondo test tarball is deprecated. # The mondo test tarball is deprecated.
pkg_tar( pkg_tar(
name = "_test-mondo-bin", name = "_test-mondo-bin",
srcs = ["//build:test-targets"], srcs = ["//build:test-targets"],
mode = "0755", mode = "0755",
package_dir = "platforms/" + PLATFORM_ARCH_STRING.replace("-", "/"), package_dir = select(for_platforms(
for_test = "platforms/{OS}/{ARCH}",
)),
tags = ["no-cache"], tags = ["no-cache"],
# TODO: how to make this multiplatform?
visibility = ["//visibility:private"], visibility = ["//visibility:private"],
) )
@ -197,10 +202,9 @@ pkg_tar(
}, },
strip_prefix = "//", strip_prefix = "//",
tags = ["no-cache"], tags = ["no-cache"],
deps = [ deps = select(for_platforms(
# TODO: how to make this multiplatform? for_test = [":_test-mondo-bin"],
":_test-mondo-bin", )),
],
) )
pkg_tar( pkg_tar(
@ -221,17 +225,14 @@ pkg_tar(
visibility = ["//visibility:private"], visibility = ["//visibility:private"],
) )
pkg_tar( [[pkg_tar(
name = "kubernetes-test-%s" % PLATFORM_ARCH_STRING, name = "kubernetes-test-%s-%s" % (os, arch),
extension = "tar.gz", extension = "tar.gz",
package_dir = "kubernetes", package_dir = "kubernetes",
strip_prefix = "//", strip_prefix = "//",
tags = ["no-cache"], tags = ["no-cache"],
deps = [ deps = select({go_platform_constraint(os, arch): [":_test-bin"]}),
# TODO: how to make this multiplatform? ) for arch in archs] for os, archs in TEST_PLATFORMS.items()]
":_test-bin",
],
)
pkg_tar( pkg_tar(
name = "_full_server", name = "_full_server",
@ -275,13 +276,21 @@ release_filegroup(
name = "release-tars", name = "release-tars",
srcs = [ srcs = [
":kubernetes.tar.gz", ":kubernetes.tar.gz",
":kubernetes-client-%s.tar.gz" % PLATFORM_ARCH_STRING,
":kubernetes-node-%s.tar.gz" % PLATFORM_ARCH_STRING,
":kubernetes-server-%s.tar.gz" % PLATFORM_ARCH_STRING,
":kubernetes-manifests.tar.gz",
":kubernetes-src.tar.gz", ":kubernetes-src.tar.gz",
":kubernetes-test-%s.tar.gz" % PLATFORM_ARCH_STRING,
":kubernetes-test.tar.gz",
":kubernetes-test-portable.tar.gz",
], ],
conditioned_srcs = for_platforms(
for_all = [
],
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",
":kubernetes-test.tar.gz", # FIXME
],
),
) )