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