Update publish_bazel_binaries job to build and upload for every commit (#354)
Change-Id: Ie6584e244e26aa2c6011f2adcbe328a59a0129f7
diff --git a/buildkite/bazelci.py b/buildkite/bazelci.py
index 2ca0b45..b96bbbd 100644
--- a/buildkite/bazelci.py
+++ b/buildkite/bazelci.py
@@ -213,63 +213,63 @@
"name": "Ubuntu 14.04, JDK 8",
"emoji-name": ":ubuntu: 14.04 (JDK 8)",
"agent-directory": "/var/lib/buildkite-agent/builds/${BUILDKITE_AGENT_NAME}",
- "nightly": True,
+ "publish_binary": True,
"java": "8"
},
"ubuntu1604": {
"name": "Ubuntu 16.04, JDK 8",
"emoji-name": ":ubuntu: 16.04 (JDK 8)",
"agent-directory": "/var/lib/buildkite-agent/builds/${BUILDKITE_AGENT_NAME}",
- "nightly": False,
+ "publish_binary": False,
"java": "8"
},
"ubuntu1804": {
"name": "Ubuntu 18.04, JDK 8",
"emoji-name": ":ubuntu: 18.04 (JDK 8)",
"agent-directory": "/var/lib/buildkite-agent/builds/${BUILDKITE_AGENT_NAME}",
- "nightly": False,
+ "publish_binary": False,
"java": "8"
},
"ubuntu1804_nojava": {
"name": "Ubuntu 18.04, no JDK",
"emoji-name": ":ubuntu: 18.04 (no JDK)",
"agent-directory": "/var/lib/buildkite-agent/builds/${BUILDKITE_AGENT_NAME}",
- "nightly": False,
+ "publish_binary": False,
"java": "no"
},
"ubuntu1804_java9": {
"name": "Ubuntu 18.04, JDK 9",
"emoji-name": ":ubuntu: 18.04 (JDK 9)",
"agent-directory": "/var/lib/buildkite-agent/builds/${BUILDKITE_AGENT_NAME}",
- "nightly": False,
+ "publish_binary": False,
"java": "9"
},
"ubuntu1804_java10": {
"name": "Ubuntu 18.04, JDK 10",
"emoji-name": ":ubuntu: 18.04 (JDK 10)",
"agent-directory": "/var/lib/buildkite-agent/builds/${BUILDKITE_AGENT_NAME}",
- "nightly": False,
+ "publish_binary": False,
"java": "10"
},
"macos": {
"name": "macOS, JDK 8",
"emoji-name": ":darwin: (JDK 8)",
"agent-directory": "/Users/buildkite/builds/${BUILDKITE_AGENT_NAME}",
- "nightly": True,
+ "publish_binary": True,
"java": "8"
},
"windows": {
"name": "Windows, JDK 8",
"emoji-name": ":windows: (JDK 8)",
"agent-directory": "d:/b/${BUILDKITE_AGENT_NAME}",
- "nightly": True,
+ "publish_binary": True,
"java": "8"
},
"rbe_ubuntu1604": {
"name": "RBE (Ubuntu 16.04, JDK 8)",
"emoji-name": ":gcloud: (JDK 8)",
"agent-directory": "/var/lib/buildkite-agent/builds/${BUILDKITE_AGENT_NAME}",
- "nightly": False,
+ "publish_binary": False,
"host-platform": "ubuntu1604",
"java": "8"
}
@@ -1126,11 +1126,11 @@
for platform in configs.copy():
if not platform in PLATFORMS:
raise BuildkiteException("Unknown platform '{}'".format(platform))
- if not PLATFORMS[platform]["nightly"]:
+ if not PLATFORMS[platform]["publish_binary"]:
del configs[platform]
- if set(configs) != set(name for name, platform in PLATFORMS.items() if platform["nightly"]):
- raise BuildkiteException("Bazel publish binaries pipeline needs to build Bazel on all nightly-enabled platforms.")
+ if set(configs) != set(name for name, platform in PLATFORMS.items() if platform["publish_binary"]):
+ raise BuildkiteException("Bazel publish binaries pipeline needs to build Bazel for every commit on all publish_binary-enabled platforms.")
# Build and Test Bazel
pipeline_steps = []
@@ -1145,7 +1145,7 @@
pipeline_steps.append("wait")
- # If all builds and tests pass, publish the Bazel binaries to GCS.
+ # If all builds succeed, publish the Bazel binaries to GCS.
pipeline_steps.append({
"label": "Publish Bazel Binaries",
"command": [
@@ -1191,12 +1191,12 @@
print(yaml.dump({"steps": pipeline_steps}))
-def bazelci_builds_download_url(platform, build_number):
- return "https://storage.googleapis.com/bazel-builds/artifacts/{0}/{1}/bazel".format(platform, build_number)
+def bazelci_builds_download_url(platform, git_commit):
+ return "https://storage.googleapis.com/bazel-builds/artifacts/{0}/{1}/bazel".format(platform, git_commit)
-def bazelci_builds_upload_url(platform, build_number):
- return "gs://bazel-builds/artifacts/{0}/{1}/bazel".format(platform, build_number)
+def bazelci_builds_upload_url(platform, git_commit):
+ return "gs://bazel-builds/artifacts/{0}/{1}/bazel".format(platform, git_commit)
def bazelci_builds_metadata_url():
@@ -1242,20 +1242,21 @@
def try_publish_binaries(build_number, expected_generation):
now = datetime.datetime.now()
+ git_commit = os.environ["BUILDKITE_COMMIT"]
info = {
"build_number": build_number,
"build_time": now.strftime("%d-%m-%Y %H:%M"),
- "git_commit": os.environ["BUILDKITE_COMMIT"],
+ "git_commit": git_commit,
"platforms": {}
}
- for platform in (name for name in PLATFORMS if PLATFORMS[name]["nightly"]):
+ for platform in (name for name in PLATFORMS if PLATFORMS[name]["publish_binary"]):
tmpdir = tempfile.mkdtemp()
try:
bazel_binary_path = download_bazel_binary(tmpdir, platform)
execute_command([gsutil_command(), "cp", "-a", "public-read", bazel_binary_path,
- bazelci_builds_upload_url(platform, build_number)])
+ bazelci_builds_upload_url(platform, git_commit)])
info["platforms"][platform] = {
- "url": bazelci_builds_download_url(platform, build_number),
+ "url": bazelci_builds_download_url(platform, git_commit),
"sha256": sha256_hexdigest(bazel_binary_path),
}
finally: