6 个版本
0.7.0 | 2022年9月15日 |
---|---|
0.6.2 | 2022年2月4日 |
0.6.1 | 2021年8月27日 |
0.6.0 | 2021年3月12日 |
0.5.1 | 2021年3月12日 |
#2251 in 命令行工具
105KB
2K SLoC
👷 buildkite-jobify
通过 GraphQL API 观察 1 个或多个 Buildkite 管道,以启动临时 Kubernetes 作业,这些作业(假设)将启动 Buildkite 代理来获取 Buildkite 已安排但尚未找到代理的作业。
仓库设置
期望 Kubernetes 作业规范及其对应的代理标签配置存储在管道附加的仓库中,从而将 CI 配置保留在该仓库中。
您仓库的管道上传作业应创建一个包含您配置的 gziped tarball 并在添加管道的其他步骤之前上传它,以便程序可以下载正在构建的提交的确切配置。
以下是一个示例 bash 脚本,旨在在 Alpine Linux 容器中运行。
#!/bin/bash
set -eu
echo "--- :aws-artifact: Uploading Jobify templates"
archive="jobify.tar.gz"
# Create a tarball of our jobify files
tar c -zf "$archive" -C .ci/jobify .
# Checksum the tarball and use that as our key
chksum=$(sha1sum $archive | awk '{ print $1 }')
# TODO: Just support CAS artifacts, and only upload unique ones (but maybe buildkite already does?)
# Upload the tarball as a Buildkite artifact
buildkite-agent artifact upload "$archive" &> upload_out
rm "$archive"
upload_info=$(cat upload_out)
# Buildkite doesn't seem to have a convenient way to know the ID assigned to the artifact
# so just cheat and parse its output for now
rx='Uploading\sartifact\s([0-9a-f-]{36})\sjobify\.tar\.gz'
if [[ "$upload_info" =~ $rx ]]; then
# Set a metadata key to point to the archive we uploaded so that jobify can pick it up
buildkite-agent meta-data set "jobify-artifact-id" "${BASH_REMATCH[1]}"
# Set the chksum so we can avoid an additional lookup if jobify already has the data
buildkite-agent meta-data set "jobify-artifact-chksum" "$chksum"
else
echo "Failed to upload jobify configuration"
exit 1
fi
echo "--- Uploading :pipeline:"
# Upload our main pipeline to kick off the rest of the build
buildkite-agent pipeline upload "$(dirname "$0")/pipeline.yml"
贡献
我们欢迎社区对这个项目的贡献。
请阅读我们的 贡献指南 了解如何开始。
许可
许可协议为以下之一:
- Apache 许可证,版本 2.0,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
您可选择其中之一。
贡献
除非您明确声明,否则您提交的任何贡献,根据 Apache-2.0 许可证定义,将按上述方式双许可,不附加任何额外条款或条件。
依赖关系
~61–84MB
~1.5M SLoC