mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-10-31 13:50:01 +00:00 
			
		
		
		
	This is the 2nd attempt. The previous was reverted while we figured out the regional mirrors (oops). New plan: k8s.gcr.io is a read-only facade that auto-detects your source region (us, eu, or asia for now) and pulls from the closest. To publish an image, push k8s-staging.gcr.io and it will be synced to the regionals automatically (similar to today). For now the staging is an alias to gcr.io/google_containers (the legacy URL). When we move off of google-owned projects (working on it), then we just do a one-time sync, and change the google-internal config, and nobody outside should notice. We can, in parallel, change the auto-sync into a manual sync - send a PR to "promote" something from staging, and a bot activates it. Nice and visible, easy to keep track of.
		
			
				
	
	
		
			169 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			169 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| package(default_visibility = ["//visibility:public"])
 | |
| 
 | |
| load("@io_bazel_rules_docker//docker:docker.bzl", "docker_build", "docker_bundle")
 | |
| load("@io_kubernetes_build//defs:build.bzl", "release_filegroup")
 | |
| 
 | |
| filegroup(
 | |
|     name = "package-srcs",
 | |
|     srcs = glob(["**"]),
 | |
|     tags = ["automanaged"],
 | |
| )
 | |
| 
 | |
| filegroup(
 | |
|     name = "all-srcs",
 | |
|     srcs = [
 | |
|         ":package-srcs",
 | |
|         "//build/debs:all-srcs",
 | |
|         "//build/release-tars:all-srcs",
 | |
|         "//build/rpms:all-srcs",
 | |
|         "//build/visible_to:all-srcs",
 | |
|     ],
 | |
|     tags = ["automanaged"],
 | |
| )
 | |
| 
 | |
| # This list should roughly match kube::build::get_docker_wrapped_binaries()
 | |
| # in build/common.sh.
 | |
| DOCKERIZED_BINARIES = {
 | |
|     "cloud-controller-manager": {
 | |
|         "base": "@official_busybox//image",
 | |
|         "target": "//cmd/cloud-controller-manager:cloud-controller-manager",
 | |
|     },
 | |
|     "kube-apiserver": {
 | |
|         "base": "@official_busybox//image",
 | |
|         "target": "//cmd/kube-apiserver:kube-apiserver",
 | |
|     },
 | |
|     "kube-controller-manager": {
 | |
|         "base": "@official_busybox//image",
 | |
|         "target": "//cmd/kube-controller-manager:kube-controller-manager",
 | |
|     },
 | |
|     "kube-scheduler": {
 | |
|         "base": "@official_busybox//image",
 | |
|         "target": "//cmd/kube-scheduler:kube-scheduler",
 | |
|     },
 | |
|     "kube-proxy": {
 | |
|         "base": "@debian-iptables-amd64//image",
 | |
|         "target": "//cmd/kube-proxy:kube-proxy",
 | |
|     },
 | |
| }
 | |
| 
 | |
| [docker_build(
 | |
|     name = binary + "-internal",
 | |
|     base = meta["base"],
 | |
|     cmd = ["/usr/bin/" + binary],
 | |
|     debs = [
 | |
|         "//build/debs:%s.deb" % binary,
 | |
|     ],
 | |
|     symlinks = {
 | |
|         # Some cluster startup scripts expect to find the binaries in /usr/local/bin,
 | |
|         # but the debs install the binaries into /usr/bin.
 | |
|         "/usr/local/bin/" + binary: "/usr/bin/" + binary,
 | |
|     },
 | |
| ) for binary, meta in DOCKERIZED_BINARIES.items()]
 | |
| 
 | |
| [docker_bundle(
 | |
|     name = binary,
 | |
|     # TODO(thockin): remove the google_containers name after release 1.10.
 | |
|     images = {
 | |
|         "k8s.gcr.io/%s:{STABLE_DOCKER_TAG}" % binary: binary + "-internal",
 | |
|         "gcr.io/google_containers/%s:{STABLE_DOCKER_TAG}" % binary: binary + "-internal",
 | |
|     },
 | |
|     stamp = True,
 | |
| ) for binary in DOCKERIZED_BINARIES.keys()]
 | |
| 
 | |
| [genrule(
 | |
|     name = binary + "_docker_tag",
 | |
|     srcs = [meta["target"]],
 | |
|     outs = [binary + ".docker_tag"],
 | |
|     cmd = "grep ^STABLE_DOCKER_TAG bazel-out/stable-status.txt | awk '{print $$2}' >$@",
 | |
|     stamp = 1,
 | |
| ) for binary, meta in DOCKERIZED_BINARIES.items()]
 | |
| 
 | |
| genrule(
 | |
|     name = "os_package_version",
 | |
|     outs = ["version"],
 | |
|     cmd = """
 | |
| grep ^STABLE_BUILD_SCM_REVISION bazel-out/stable-status.txt \
 | |
|     | awk '{print $$2}' \
 | |
|     | sed -e 's/^v//' -Ee 's/-([a-z]+)/~\\1/' -e 's/-/+/g' \
 | |
|     >$@
 | |
| """,
 | |
|     stamp = 1,
 | |
| )
 | |
| 
 | |
| genrule(
 | |
|     name = "cni_package_version",
 | |
|     outs = ["cni_version"],
 | |
|     cmd = "echo 0.5.1 >$@",
 | |
| )
 | |
| 
 | |
| release_filegroup(
 | |
|     name = "docker-artifacts",
 | |
|     srcs = [":%s.tar" % binary for binary in DOCKERIZED_BINARIES.keys()] +
 | |
|            [":%s.docker_tag" % binary for binary in DOCKERIZED_BINARIES.keys()],
 | |
| )
 | |
| 
 | |
| # KUBE_CLIENT_TARGETS
 | |
| release_filegroup(
 | |
|     name = "client-targets",
 | |
|     srcs = [
 | |
|         "//cmd/kubectl",
 | |
|     ],
 | |
| )
 | |
| 
 | |
| # KUBE_NODE_TARGETS
 | |
| release_filegroup(
 | |
|     name = "node-targets",
 | |
|     srcs = [
 | |
|         "//cmd/kube-proxy",
 | |
|         "//cmd/kubeadm",
 | |
|         "//cmd/kubelet",
 | |
|     ],
 | |
| )
 | |
| 
 | |
| # KUBE_SERVER_TARGETS
 | |
| # No need to duplicate CLIENT_TARGETS or NODE_TARGETS here,
 | |
| # since we include them in the actual build rule.
 | |
| release_filegroup(
 | |
|     name = "server-targets",
 | |
|     srcs = [
 | |
|         "//cluster/gce/gci/mounter",
 | |
|         "//cmd/cloud-controller-manager",
 | |
|         "//cmd/hyperkube",
 | |
|         "//cmd/kube-apiserver",
 | |
|         "//cmd/kube-controller-manager",
 | |
|         "//cmd/kube-scheduler",
 | |
|         "//vendor/k8s.io/kube-aggregator",
 | |
|     ],
 | |
| )
 | |
| 
 | |
| # kube::golang::test_targets
 | |
| filegroup(
 | |
|     name = "test-targets",
 | |
|     srcs = [
 | |
|         "//cmd/gendocs",
 | |
|         "//cmd/genkubedocs",
 | |
|         "//cmd/genman",
 | |
|         "//cmd/genswaggertypedocs",
 | |
|         "//cmd/genyaml",
 | |
|         "//cmd/kubemark",  # TODO: server platforms only
 | |
|         "//cmd/linkcheck",
 | |
|         "//test/e2e:e2e.test",
 | |
|         "//test/e2e_node:e2e_node.test",  # TODO: server platforms only
 | |
|         "//vendor/github.com/onsi/ginkgo/ginkgo",
 | |
|     ],
 | |
| )
 | |
| 
 | |
| # KUBE_TEST_PORTABLE
 | |
| filegroup(
 | |
|     name = "test-portable-targets",
 | |
|     srcs = [
 | |
|         "//hack:e2e.go",
 | |
|         "//hack:get-build.sh",
 | |
|         "//hack:ginkgo-e2e.sh",
 | |
|         "//hack/e2e-internal:all-srcs",
 | |
|         "//hack/lib:all-srcs",
 | |
|         "//test/e2e/testing-manifests:all-srcs",
 | |
|         "//test/kubemark:all-srcs",
 | |
|     ],
 | |
| )
 |