Yahoo! 开源了他们在内部生产系统中使用的持续交付工具 Screwdriver 。
Screwdriver 作为一种持续交付工具,集成了从代码提交到生产系统部署的所有步骤。Yahoo!在过去五年中逐步使用 Screwdriver 去自动化所有的交付过程,现可达到每日超过 25,000 次的构建和多于 12,000 次的 git 提交。按 Yahoo! 的说法,他们所希望的持续集成工具应具备以下特性:
- 使得开发人员易于建立部署流水线。流水线采用 YAML 文件定义,并可通过放弃变更或者使用另一版本配置文件将流水线还原回早期的版本。
- 主干开发的优化。主干中应包括应用的可交付版本。为确保被拉取的代码在提交前已得到测试,测试是自动运行的。
- 支持回滚。任何具有写权限的人可在发生错误时回滚部署。
Screwdriver 具有五个主要组件:
- REST API:与流水线协同工作的接口。
- Web UI:用于流水线 API 的可视化接口。
- 启动器(Launcher):设置环境并执行 Shell 命令的工具。
- 执行引擎(Execution Engine):可插拔的构建执行器,支持在容器(Jenkins、Kubernetes、Mesos、Docker Swarm)内执行命令。
- 数据存储(Datastore):可插拔的 NoSQL 存储,用于维护流水线配置数据(DynamoDB、MongoDB、CouchDB、Postgres)。执行引擎和数据存储都使用了可插拔的架构,使得用户可按自身意向选用引擎。
现在 Yahoo! 已开源了该持续集成工具的一个精简版本,并有计划在未来的一个月内添加上一些未发布的组件,其中包括:保存可供后续使用的元数据、采集指标、分析日志,以及用于设置和执行流水线的模板。
查看英文原文: Yahoo! Screwdriver–A CD Tool that Scales
感谢薛命灯对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ , @丁晓昀),微信(微信号: InfoQChina )关注我们。
评论