workspace.bzl 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. # Copyright 2018 The Kubernetes Authors.
  2. #
  3. # Licensed under the Apache License, Version 2.0 (the "License");
  4. # you may not use this file except in compliance with the License.
  5. # You may obtain a copy of the License at
  6. #
  7. # http://www.apache.org/licenses/LICENSE-2.0
  8. #
  9. # Unless required by applicable law or agreed to in writing, software
  10. # distributed under the License is distributed on an "AS IS" BASIS,
  11. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. # See the License for the specific language governing permissions and
  13. # limitations under the License.
  14. load("//build:platforms.bzl", "SERVER_PLATFORMS")
  15. load("//build:workspace_mirror.bzl", "mirror")
  16. load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive", "http_file")
  17. load("@io_bazel_rules_docker//container:container.bzl", "container_pull")
  18. CNI_VERSION = "0.8.5"
  19. _CNI_TARBALL_ARCH_SHA256 = {
  20. "amd64": "bd682ffcf701e8f83283cdff7281aad0c83b02a56084d6e601216210732833f9",
  21. "arm": "86a868234045837cb3f5d58a0a4468ff42845d50b5e87bd128f050ef393d7495",
  22. "arm64": "a7881ec37e592c897bdfd2a225b4ed74caa981e3c4cdcf8f45574f8d2f111bce",
  23. "ppc64le": "a26cc3734f7cb980ab8fb3aaa64ccf2d67291478130009fa9542355fbdd94aa5",
  24. "s390x": "033ea910a83144609083d5c3fb62bf4a379b0b17729a1a9e829feed9fa7a9d97",
  25. }
  26. CRI_TOOLS_VERSION = "1.17.0"
  27. _CRI_TARBALL_ARCH_SHA256 = {
  28. "linux-386": "cffa443cf76ab4b760a68d4db555d1854cb692e8b20b3360cf23221815ca151e",
  29. "linux-amd64": "7b72073797f638f099ed19550d52e9b9067672523fc51b746e65d7aa0bafa414",
  30. "linux-arm": "9700957218e8e7bdc02cbc8fda4c189f5b6223a93ba89d876bdfd77b6117e9b7",
  31. "linux-arm64": "d89afd89c2852509fafeaff6534d456272360fcee732a8d0cb89476377387e12",
  32. "linux-ppc64le": "a61c52b9ac5bffe94ae4c09763083c60f3eccd30eb351017b310f32d1cafb855",
  33. "linux-s390x": "0db445f0b74ecb51708b710480a462b728174155c5f2709a39d1cc2dc975e350",
  34. "windows-386": "2e285250d36b5cb3e8c047b191c0c0af606fed7c0034bb140ba95cc1498f4996",
  35. "windows-amd64": "e18150d5546d3ddf6b165bd9aec0f65c18aacf75b94fb28bb26bfc0238f07b28",
  36. }
  37. ETCD_VERSION = "3.4.3"
  38. _ETCD_TARBALL_ARCH_SHA256 = {
  39. "amd64": "6c642b723a86941b99753dff6c00b26d3b033209b15ee33325dc8e7f4cd68f07",
  40. "arm64": "01bd849ad99693600bd59db8d0e66ac64aac1e3801900665c31bd393972e3554",
  41. "ppc64le": "3f20888d6efb7f2665ebe278860eec6e8fc9555624e56c3d93f5a6b6dd90a21a",
  42. }
  43. # Dependencies needed for a Kubernetes "release", e.g. building docker images,
  44. # debs, RPMs, or tarballs.
  45. def release_dependencies():
  46. cni_tarballs()
  47. cri_tarballs()
  48. debian_image_dependencies()
  49. etcd_tarballs()
  50. def cni_tarballs():
  51. for arch, sha in _CNI_TARBALL_ARCH_SHA256.items():
  52. http_file(
  53. name = "kubernetes_cni_%s" % arch,
  54. downloaded_file_path = "kubernetes_cni.tgz",
  55. sha256 = sha,
  56. urls = ["https://storage.googleapis.com/k8s-artifacts-cni/release/v%s/cni-plugins-linux-%s-v%s.tgz" % (CNI_VERSION, arch, CNI_VERSION)],
  57. )
  58. def cri_tarballs():
  59. for arch, sha in _CRI_TARBALL_ARCH_SHA256.items():
  60. http_file(
  61. name = "cri_tools_%s" % arch,
  62. downloaded_file_path = "cri_tools.tgz",
  63. sha256 = sha,
  64. urls = mirror("https://github.com/kubernetes-incubator/cri-tools/releases/download/v%s/crictl-v%s-%s.tar.gz" % (CRI_TOOLS_VERSION, CRI_TOOLS_VERSION, arch)),
  65. )
  66. # Use go get -u github.com/estesp/manifest-tool to find these values
  67. _DEBIAN_BASE_DIGEST = {
  68. "manifest": "sha256:ebda8587ec0f49eb88ee3a608ef018484908cbc5aa32556a0d78356088c185d4",
  69. "amd64": "sha256:d7be39e143d4e6677a28c81c0a84868b40800fc979dea1848bb19d526668a00c",
  70. "arm": "sha256:fc731da13b0bc9013b85a86b583fc92e50869b5bc8e7aa6ca730ec0240954c7d",
  71. "arm64": "sha256:12502c3eed050fa9b6d5fe353a44bfc5f437dc325c8912b1a48dcc180df36f1e",
  72. "ppc64le": "sha256:4277aa59b63c5a1369e6d84a295ecc4ffa08985dcf114de9f7b6de1af4fcbc86",
  73. "s390x": "sha256:78ef2a6b017539379c1654b4e52ba8519bfec821c62d0b3a1dbd15104b711e21",
  74. }
  75. _DEBIAN_IPTABLES_DIGEST = {
  76. "manifest": "sha256:d1cd487e89fb4cba853cd3a948a6e9016faf66f2a7bb53cb1ac6b6c9cb58f5ed",
  77. "amd64": "sha256:852d3c569932059bcab3a52cb6105c432d85b4b7bbd5fc93153b78010e34a783",
  78. "arm": "sha256:c10f01b414a7cd4b2f3e26e152c90c64a1e781d99f83a6809764cf74ecbc46c3",
  79. "arm64": "sha256:5725e6fde13a6405cf800e22846ebd2bde24b0860f1dc3f6f5f256f03cfa85bd",
  80. "ppc64le": "sha256:b6d6e56a0c34c0393dcba0d5faaa531b92e5876114c5ab5a90e82e4889724c5a",
  81. "s390x": "sha256:39e67e9bf25d67fe35bd9dcb25367277e5967368e02f2741e0efd4ce8874db14",
  82. }
  83. _DEBIAN_HYPERKUBE_BASE_DIGEST = {
  84. "manifest": "sha256:8cabe02be6e86685d8860b7ace7c7addc9591a339728703027a4854677f1c772",
  85. "amd64": "sha256:5d4ea2fb5fbe9a9a9da74f67cf2faefc881968bc39f2ac5d62d9167e575812a1",
  86. "arm": "sha256:73260814af61522ff6aa48291df457d3bb0a91c4bf72e7cfa51fbaf03eb65fae",
  87. "arm64": "sha256:78eeb1a31eef7c16f954444d64636d939d89307e752964ad6d9d06966c722da3",
  88. "ppc64le": "sha256:92857d647abe8d9c7b4d7160cd5699112afc12fde369082a8ed00688b17928a9",
  89. "s390x": "sha256:c11d74fa0538c67238576c247bfaddf95ebaa90cd03cb4d2f2ac3c6ebe0441e2",
  90. }
  91. def _digest(d, arch):
  92. if arch not in d:
  93. print("WARNING: %s not found in %r" % (arch, d))
  94. return d["manifest"]
  95. return d[arch]
  96. def debian_image_dependencies():
  97. for arch in SERVER_PLATFORMS["linux"]:
  98. container_pull(
  99. name = "debian-base-" + arch,
  100. architecture = arch,
  101. digest = _digest(_DEBIAN_BASE_DIGEST, arch),
  102. registry = "k8s.gcr.io",
  103. repository = "debian-base",
  104. tag = "v2.0.0", # ignored, but kept here for documentation
  105. )
  106. container_pull(
  107. name = "debian-iptables-" + arch,
  108. architecture = arch,
  109. digest = _digest(_DEBIAN_IPTABLES_DIGEST, arch),
  110. registry = "k8s.gcr.io",
  111. repository = "debian-iptables",
  112. tag = "v12.0.1", # ignored, but kept here for documentation
  113. )
  114. container_pull(
  115. name = "debian-hyperkube-base-" + arch,
  116. architecture = arch,
  117. digest = _digest(_DEBIAN_HYPERKUBE_BASE_DIGEST, arch),
  118. registry = "k8s.gcr.io",
  119. repository = "debian-hyperkube-base",
  120. tag = "0.12.1", # ignored, but kept here for documentation
  121. )
  122. def etcd_tarballs():
  123. for arch, sha in _ETCD_TARBALL_ARCH_SHA256.items():
  124. http_archive(
  125. name = "com_coreos_etcd_%s" % arch,
  126. build_file = "@//third_party:etcd.BUILD",
  127. sha256 = sha,
  128. strip_prefix = "etcd-v%s-linux-%s" % (ETCD_VERSION, arch),
  129. urls = mirror("https://github.com/coreos/etcd/releases/download/v%s/etcd-v%s-linux-%s.tar.gz" % (ETCD_VERSION, ETCD_VERSION, arch)),
  130. )