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