本镜像用于部署ClusterHQ的Buildbot持续集成系统。Buildbot master以Docker容器形式运行在AWS EC2实例上,大部分构建slave为EC2 latent slave(由master自动启动),部分特殊slave(如OS X slave)需手动启动。系统响应Flocker仓库的代码推送或强制构建请求,执行构建任务,且多数构建会合并到Flocker master分支进行测试。
config.yml文件管理敏感配置,支持环境变量注入适用于Flocker项目的持续集成/持续部署(CI/CD)流程,具体包括:
代码使用Fabric启动和管理Buildbot master,需安装以下依赖:
bash$ pip install pyyaml fabric libcloud
配置需包含敏感数据(不可提交至Github仓库),通过config.yml文件提供。示例配置见config.yml.sample。
ClusterHQ master的配置文件可在LastPass的config@build.clusterhq.com中获取。若安装了LastPass命令行客户端,可通过Fabric下载当前配置:
bash$ fab getConfig
Fabric会将这些变量通过Docker环境变量以JSON形式传递给Buildbot。
创建Staging服务器
创建AWS EC2安全组,允许以下入站流量:
安全组应允许所有出站流量。
安装并配置boto以支持AWS脚本访问。
运行以下命令启动EC2实例(会显示实例外部IP):
bash$ python start-aws.py
查看帮助:python start-aws.py --help
在EC2实例上安装依赖并启动Docker:
bash[aws]$ sudo yum install -y fabric git [aws]$ curl -sSL https://get.docker.com/ | sudo sh [aws]$ sudo setenforce 0 [aws]$ sudo systemctl start docker
创建Staging Docker镜像
在Staging服务器上执行:
bash[aws]$ git clone https://github.com/ClusterHQ/build.clusterhq.com.git [aws]$ cd build.clusterhq.com [aws]$ # 将<BRANCH>替换为目标分支 [aws]$ git checkout <BRANCH> [aws]$ sudo docker build --tag clusterhq/build.clusterhq.com:staging . [aws]$ EXISTS=$(sudo docker inspect --format="{}" buildmaster-data 2> /dev/null) [aws]$ if [ "$EXISTS" == "{}" ]; then sudo docker rm buildmaster-data; fi [aws]$ sudo docker run --name buildmaster-data -v /srv/buildmaster/data busybox /bin/true
创建Staging配置
从config.yml创建staging.yml,并修改以下配置:
buildmaster.host设为EC2实例IP,添加buildmaster.docker_tag: staging以使用staging镜像github.report_status设为False,避免向Flocker Github仓库发布报告启动Staging服务器
在本地机器执行以下命令启动测试Buildbot master:
bash# 使用restart而非update,避免从Docker Hub拉取镜像 $ fab restart:staging.yml
通过EC2实例IP访问Buildmaster门户,使用config.yml中auth部分的凭据登录。点击flocker链接进入Web表单。
注意:Staging环境无法响应Github推送触发构建,需手动输入分支名并点击
Force按钮触发构建。Latent slave会自动启动,非latent slave(如OS X)需手动启动。
确保已安装依赖并创建配置(见上文)。
更新master分支并推送到Github,Docker registry会自动基于master分支构建新的latest镜像。
推送后约10分钟完成镜像构建,可在https://registry.hub.docker.com/u/clusterhq/build.clusterhq.com/builds_history/46090/%E6%9F%A5%E7%9C%8B%E7%8A%B6%E6%80%81%EF%BC%88%E9%9C%80Docker Hub的clusterhq组权限)。
添加生产环境SSH密钥:
bash$ ssh-add /path/to/HybridDeployment/credentials/master_key
检查当前是否有运行中的构建:[***]
在Zulip的Engineering > buildbot流通知Buildbot将暂停几分钟。
更新生产环境Buildbot至最新镜像:
bash$ fab update
查看日志:
bash$ fab logs
重启Buildbot(不更新镜像):
bash$ fab restart
S3上托管有wheelhouse(靠近buildslave),用于存储依赖包。配置s3cmd凭据后(通过s3cmd --configure),可按以下步骤更新:
bashpython setup.py sdist pip wheel -f dist "Flocker[dev]==$(python setup.py --version)" s3cmd put -P -m "Content-Type:application/python+wheel" wheelhouse/*.whl s3://clusterhq-wheelhouse/fedora20-x86_64 s3cmd ls s3://clusterhq-wheelhouse/fedora20-x86_64/ | sed 's,^.*/\(.*\),<a href="\1">\1</a><br/>,' | s3cmd put -P -m "text/html" - s3://clusterhq-wheelhouse/fedora20-x86_64/index
Buildslave通过pip.conf指向https://s3-us-west-2.amazonaws.com/clusterhq-wheelhouse/fedora20-x86_64/index。
凭据创建:在AWS IAM控制台创建。
命名规则
Slave名称由多个部分组成(以/分隔):
fedora-20)aws或redhat-openstack)zfs-head)Slave AMIs
每个平台有两个Amazon Machine Image:
buildslave-<platform>:基础构建环境,包含所有依赖(含zfs)buildslave-<platform>-zfs-head:测试最新zfs版本,实例创建时安装zfs通过以下命令构建和升级镜像:
slave/build-images <platform>(生成带<TIMESTAMP>后缀的镜像)slave/promote-images <platform>(设为默认镜像)需基于aws_config.yml.sample创建aws.config.yml配置文件。
特定Slave配置
Mac OS X Buildslave: 需root权限和SSH配置,执行:
bashfab -f slave/osx/fabfile.py --hosts=${USERNAME}@${OSX_ADDRESS} install:0,${PASSWORD},${MASTER}
测试或无root权限时,手动启动:
bashcurl -O https://bootstrap.pypa.io/get-pip.py python get-pip.py --user ~/Library/Python/2.7/bin/pip install --user buildbot-slave virtualenv ~/Library/Python/2.7/bin/buildslave create-slave ~/flocker-osx "${MASTER}" osx-0 "${PASSWORD}" export PATH=$HOME/Library/python/2.7/bin:$PATH twistd --nodaemon -y flocker-osx/buildbot.tac
Fedora硬件构建器: 在Fedora 20/21裸机(如Rackspace OnMetal)上配置:
bashfab -f slave/vagrant/fabfile.py --hosts=root@${ONMETAL_IP_ADDRESS} install:0,${PASSWORD},${MASTER}
Red Hat Openstack: 通过SSH跳转主机配置,需注册SSH密钥、创建服务器并配置:
bash# 在redhat-openstack-novahost上注册密钥 nova keypair-add --pub-key <pub_key_file> <key_name> # 创建服务器 fab -H redhat-openstack-novahost -f slave/redhat-openstack/fabfile.py create_server:<key_name> # 配置构建slave fab -H redhat-openstack-buildslave -f slave/redhat-openstack/fabfile.py configure:0,${PASSWORD},${BUILDMASTER}
VirtualBox错误:
若出现Error, some other host already uses address,可通过以下方式解决:
bash# 查看所有Vagrant环境 ssh root@${IP_ADDRESS} su - buildslave vagrant global-status # 销毁所有Vagrant盒子 vagrant destroy ${ID} # 清理VirtualBox进程和注册VM for box in $(VBoxManage list vms | cut -f -1 -d ' ' ); do eval VBoxManage unregistervm $box ; done
使用Prometheus监控Buildbot,通过以下命令启动:
bashfab --hosts=${USERNAME}@${HOST} startPrometheus
监控配置为轮询生产和staging环境的/metrics端点。
Buildbot master存储构建 artifacts,每日脚本会删除14天以上数据。临时清理可执行:
bash# 删除7天以上文件 find . -type f -mtime +7 -exec unlink {} \;
也可通过AWS控制台扩展EC2实例卷大小。
强制构建Pull Request时,在“Force”按钮中使用分支名refs/pull/<PR编号>/head。注意:Pull Request中的代码会在Buildslaves上执行,需谨慎操作。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务