BUILD 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322
  1. package(default_visibility = ["//visibility:public"])
  2. load(
  3. "//build:platforms.bzl",
  4. "CLIENT_PLATFORMS",
  5. "NODE_PLATFORMS",
  6. "SERVER_PLATFORMS",
  7. "TEST_PLATFORMS",
  8. "for_platforms",
  9. "go_platform_constraint",
  10. )
  11. load("@io_k8s_repo_infra//defs:build.bzl", "release_filegroup")
  12. load("@io_k8s_repo_infra//defs:pkg.bzl", "pkg_tar")
  13. load("//staging:repos_generated.bzl", "staging_repos")
  14. # Bazel doesn't make the output filename
  15. # (such as kubernetes-server-{OS}-{ARCH}.tar.gz) configurable, so we instead
  16. # create rules for all platforms and tag them manual.
  17. # We then select the correct set of platform-specific tarballs in this filegroup
  18. # using a select() statement.
  19. # Thus the release-tars target always selects the correct set of tarballs
  20. # for the configured platform being built.
  21. release_filegroup(
  22. name = "release-tars",
  23. conditioned_srcs = for_platforms(
  24. for_all = [
  25. ":kubernetes.tar.gz",
  26. ":kubernetes-src.tar.gz",
  27. ],
  28. for_client = [":kubernetes-client-{OS}-{ARCH}.tar.gz"],
  29. for_node = [":kubernetes-node-{OS}-{ARCH}.tar.gz"],
  30. for_server = [
  31. ":kubernetes-server-{OS}-{ARCH}.tar.gz",
  32. ":kubernetes-manifests.tar.gz",
  33. ],
  34. for_test = [
  35. ":kubernetes-test-portable.tar.gz",
  36. ":kubernetes-test-{OS}-{ARCH}.tar.gz",
  37. # TODO(ixdy): remove once the "mondo-test" tarball is deprecated.
  38. # It isn't really mondo under Bazel anyway.
  39. ":kubernetes-test.tar.gz",
  40. ],
  41. ),
  42. )
  43. filegroup(
  44. name = "package-srcs",
  45. srcs = glob(["**"]),
  46. tags = ["automanaged"],
  47. visibility = ["//visibility:private"],
  48. )
  49. filegroup(
  50. name = "all-srcs",
  51. srcs = [":package-srcs"],
  52. tags = ["automanaged"],
  53. )
  54. pkg_tar(
  55. name = "kubernetes-src",
  56. srcs = ["//:all-srcs"],
  57. extension = "tar.gz",
  58. package_dir = "kubernetes",
  59. strip_prefix = "//",
  60. symlinks = {
  61. "kubernetes/vendor/%s" % repo: "../../staging/src/%s" % repo
  62. for repo in staging_repos
  63. },
  64. tags = [
  65. "manual",
  66. "no-cache",
  67. ],
  68. )
  69. # Included in node and server tarballs.
  70. filegroup(
  71. name = "license-targets",
  72. srcs = [
  73. ":kubernetes-src.tar.gz",
  74. "//:Godeps/LICENSES",
  75. ],
  76. visibility = ["//visibility:private"],
  77. )
  78. pkg_tar(
  79. name = "_client-bin",
  80. srcs = ["//build:client-targets"],
  81. mode = "0755",
  82. package_dir = "client/bin",
  83. tags = [
  84. "manual",
  85. "no-cache",
  86. ],
  87. visibility = ["//visibility:private"],
  88. )
  89. [[pkg_tar(
  90. name = "kubernetes-client-%s-%s" % (os, arch),
  91. extension = "tar.gz",
  92. package_dir = "kubernetes",
  93. tags = [
  94. "manual",
  95. "no-cache",
  96. ],
  97. deps = select({go_platform_constraint(os, arch): [":_client-bin"]}),
  98. ) for arch in archs] for os, archs in CLIENT_PLATFORMS.items()]
  99. pkg_tar(
  100. name = "_node-bin",
  101. srcs = [
  102. "//build:client-targets",
  103. "//build:node-targets",
  104. ],
  105. mode = "0755",
  106. package_dir = "node/bin",
  107. tags = [
  108. "manual",
  109. "no-cache",
  110. ],
  111. visibility = ["//visibility:private"],
  112. )
  113. [[pkg_tar(
  114. name = "kubernetes-node-%s-%s" % (os, arch),
  115. srcs = [":license-targets"],
  116. extension = "tar.gz",
  117. mode = "0644",
  118. package_dir = "kubernetes",
  119. tags = [
  120. "manual",
  121. "no-cache",
  122. ],
  123. deps = select({go_platform_constraint(os, arch): [":_node-bin"]}),
  124. ) for arch in archs] for os, archs in NODE_PLATFORMS.items()]
  125. pkg_tar(
  126. name = "_server-bin",
  127. srcs = [
  128. "//build:client-targets",
  129. "//build:docker-artifacts",
  130. "//build:node-targets",
  131. "//build:server-targets",
  132. ],
  133. mode = "0755",
  134. package_dir = "server/bin",
  135. tags = [
  136. "manual",
  137. "no-cache",
  138. ],
  139. visibility = ["//visibility:private"],
  140. )
  141. genrule(
  142. name = "dummy",
  143. outs = [".dummy"],
  144. cmd = "touch $@",
  145. visibility = ["//visibility:private"],
  146. )
  147. # Some of the startup scripts fail if there isn't an addons/ directory in the server tarball.
  148. pkg_tar(
  149. name = "_server-addons",
  150. srcs = [
  151. ":.dummy",
  152. ],
  153. package_dir = "addons",
  154. tags = [
  155. "manual",
  156. "no-cache",
  157. ],
  158. visibility = ["//visibility:private"],
  159. )
  160. [[pkg_tar(
  161. name = "kubernetes-server-%s-%s" % (os, arch),
  162. srcs = [":license-targets"],
  163. extension = "tar.gz",
  164. mode = "0644",
  165. package_dir = "kubernetes",
  166. tags = [
  167. "manual",
  168. "no-cache",
  169. ],
  170. deps = select({
  171. go_platform_constraint(os, arch): [
  172. ":_server-addons",
  173. ":_server-bin",
  174. ],
  175. }),
  176. ) for arch in archs] for os, archs in SERVER_PLATFORMS.items()]
  177. # The mondo test tarball is deprecated.
  178. pkg_tar(
  179. name = "_test-mondo-bin",
  180. srcs = ["//build:test-targets"],
  181. mode = "0755",
  182. package_dir = select(for_platforms(
  183. for_test = "platforms/{OS}/{ARCH}",
  184. )),
  185. tags = [
  186. "manual",
  187. "no-cache",
  188. ],
  189. visibility = ["//visibility:private"],
  190. )
  191. genrule(
  192. name = "kubernetes-test-mondo-deprecation",
  193. outs = ["DEPRECATION_NOTICE"],
  194. cmd = """cat <<EOF >$@
  195. The mondo test tarball containing binaries for all platforms is
  196. DEPRECATED as of Kubernetes 1.14.
  197. Users of this tarball should migrate to using the platform-specific
  198. tarballs in combination with the "portable" tarball which contains
  199. scripts, test images, and other manifests.
  200. For more details, please see KEP
  201. sig-testing/20190118-breaking-apart-the-kubernetes-test-tarball.
  202. EOF
  203. """,
  204. visibility = ["//visibility:private"],
  205. )
  206. # The mondo test tarball is deprecated.
  207. # This one was never really correct, anyway, since we can't include
  208. # binaries from multiple platforms in a single tarball.
  209. pkg_tar(
  210. name = "kubernetes-test",
  211. srcs = [
  212. ":kubernetes-test-mondo-deprecation",
  213. "//build:test-portable-targets",
  214. ],
  215. extension = "tar.gz",
  216. package_dir = "kubernetes",
  217. remap_paths = {
  218. "build/release-tars/DEPRECATION_NOTICE": "DEPRECATION_NOTICE",
  219. },
  220. strip_prefix = "//",
  221. tags = [
  222. "manual",
  223. "no-cache",
  224. ],
  225. deps = select(for_platforms(
  226. for_test = [":_test-mondo-bin"],
  227. )),
  228. )
  229. pkg_tar(
  230. name = "kubernetes-test-portable",
  231. srcs = ["//build:test-portable-targets"],
  232. extension = "tar.gz",
  233. package_dir = "kubernetes",
  234. strip_prefix = "//",
  235. tags = ["no-cache"],
  236. )
  237. pkg_tar(
  238. name = "_test-bin",
  239. srcs = ["//build:test-targets"],
  240. mode = "0755",
  241. package_dir = "test/bin",
  242. tags = [
  243. "manual",
  244. "no-cache",
  245. ],
  246. visibility = ["//visibility:private"],
  247. )
  248. [[pkg_tar(
  249. name = "kubernetes-test-%s-%s" % (os, arch),
  250. extension = "tar.gz",
  251. package_dir = "kubernetes",
  252. strip_prefix = "//",
  253. tags = [
  254. "manual",
  255. "no-cache",
  256. ],
  257. deps = select({go_platform_constraint(os, arch): [":_test-bin"]}),
  258. ) for arch in archs] for os, archs in TEST_PLATFORMS.items()]
  259. pkg_tar(
  260. name = "_full_server",
  261. srcs = [
  262. ":kubernetes-manifests.tar.gz",
  263. ],
  264. package_dir = "server",
  265. tags = [
  266. "manual",
  267. "no-cache",
  268. ],
  269. visibility = ["//visibility:private"],
  270. )
  271. pkg_tar(
  272. name = "kubernetes",
  273. srcs = [
  274. "//:Godeps/LICENSES",
  275. "//:README.md",
  276. "//:version",
  277. "//cluster:all-srcs",
  278. "//docs:all-srcs",
  279. "//hack/lib:all-srcs",
  280. ],
  281. extension = "tar.gz",
  282. package_dir = "kubernetes",
  283. strip_prefix = "//",
  284. tags = ["no-cache"],
  285. deps = [
  286. ":_full_server",
  287. ],
  288. )
  289. pkg_tar(
  290. name = "kubernetes-manifests",
  291. extension = "tar.gz",
  292. tags = ["no-cache"],
  293. deps = [
  294. "//cluster:manifests",
  295. ],
  296. )