Yahoo! 開源了他們在內(nèi)部生產(chǎn)系統(tǒng)中使用的持續(xù)交付工具Screwdriver。
Screwdriver作為一種持續(xù)交付工具,集成了從代碼提交到生產(chǎn)系統(tǒng)部署的所有步驟。Yahoo!在過去五年中逐步使用Screwdriver去自動化所有的交付過程,現(xiàn)可達(dá)到每日超過25,000次的構(gòu)建和多于12,000次的git提交。按Yahoo!的說法,他們所希望的持續(xù)集成工具應(yīng)具備以下特性:
使得開發(fā)人員易于建立部署流水線。流水線采用YAML文件定義,并可通過放棄變更或者使用另一版本配置文件將流水線還原回早期的版本。 主干開發(fā)的優(yōu)化。主干中應(yīng)包括應(yīng)用的可交付版本。為確保被拉取的代碼在提交前已得到測試,測試是自動運(yùn)行的。 支持回滾。任何具有寫權(quán)限的人可在發(fā)生錯(cuò)誤時(shí)回滾部署。Screwdriver具有五個(gè)主要組件:
REST API:與流水線協(xié)同工作的接口。
Web UI:用于流水線API的可視化接口。
啟動器(Launcher):設(shè)置環(huán)境并執(zhí)行Shell命令的工具。
執(zhí)行引擎(Execution Engine):可插拔的構(gòu)建執(zhí)行器,支持在容器(Jenkins、Kubernetes、Mesos、Docker Swarm)內(nèi)執(zhí)行命令。
數(shù)據(jù)存儲(Datastore):可插拔的NoSQL存儲,用于維護(hù)流水線配置數(shù)據(jù)(DynamoDB、MongoDB、CouchDB、Postgres)。執(zhí)行引擎和數(shù)據(jù)存儲都使用了可插拔的架構(gòu),使得用戶可按自身意向選用引擎。
現(xiàn)在Yahoo!已開源了該持續(xù)集成工具的一個(gè)精簡版本,并有計(jì)劃在未來的一個(gè)月內(nèi)添加上一些未發(fā)布的組件,其中包括:保存可供后續(xù)使用的元數(shù)據(jù)、采集指標(biāo)、分析日志,以及用于設(shè)置和執(zhí)行流水線的模板。
查看英文原文:Yahoo! Screwdriver–A CD Tool that Scales