Jenkins之父Kohsuke Kawaguchi談持續(xù)交付流水線
一切優(yōu)秀理念和方法論的大規(guī)模普及,都有賴于先進(jìn)技術(shù)的發(fā)展以及對(duì)應(yīng)工具的發(fā)明創(chuàng)造來承載,DevOps持續(xù)交付理念亦不例外。軟件開發(fā)是截至目前,人類最復(fù)雜、最不可控的工程技術(shù)工作,一次代碼提交到上線,會(huì)涉及數(shù)十、數(shù)百、乃至數(shù)千個(gè)步驟、命令、服務(wù)、應(yīng)用和環(huán)境,如果我們沒有自動(dòng)化交付流水線來不斷提升自動(dòng)化率,實(shí)施可重復(fù)且可靠的交付運(yùn)作,而按照傳統(tǒng)的以流程文檔和操作規(guī)范指引、通過手工操作來進(jìn)行交付活動(dòng)的話,其工作效率之低、錯(cuò)誤率之高已經(jīng)和正在被諸多沒有采用DevOps開發(fā)模式和持續(xù)交付工具鏈的企業(yè)所驗(yàn)證。
KK談DevOps持續(xù)交付理念和方法論
Kohsuke Kawaguchi(KK)作為Jenkins的創(chuàng)始人,同時(shí)也是CloudBees公司CTO,是將DevOps持續(xù)交付理念進(jìn)行工具工程化實(shí)踐的第一人,更是推動(dòng)DevOps理念大規(guī)模普及的靈魂人物之一。作為軟件開發(fā)端到端持續(xù)交付系統(tǒng),Jenkins用戶量達(dá)200+萬,在持續(xù)交付流水線專業(yè)工具領(lǐng)域市場(chǎng)占有率超90%,是事實(shí)上的流水線工具標(biāo)準(zhǔn)。
日前,在2018華為全聯(lián)接大會(huì)上,KK帶來主題為《Super Powers Coming to Your Jenkins》的精彩演講,內(nèi)容涉及DevOps CI/CD持續(xù)交付理念和方法論,以及Jenkins流水線Blue Ocean、Cloud Native Jenkins、Jenkins Evergreen、Jenkins X等面向不同場(chǎng)景的產(chǎn)品解決方案及關(guān)鍵技術(shù)。
例如,有了Cloud Native Jenkins,通過云化和彈性擴(kuò)容降低單點(diǎn)故障,用戶就不會(huì)在周五晚上接到Jenkins服務(wù)宕機(jī)需要修復(fù)的連環(huán)奪命c(diǎn)all,也無需做資源的預(yù)留以降低運(yùn)維成本和前期投資,未來也將會(huì)有更高的性能表現(xiàn)。
Jenkins Evergreen提供了預(yù)置模板,用戶僅需幾次點(diǎn)擊,在幾分鐘內(nèi)即可生成一條可持續(xù)工作的流水線,大大簡(jiǎn)化流水線的配置步驟,有效降低配置門檻。Evergreen所有的配置均由Jenkins管理,可在線升級(jí),用戶只需專注于自己的業(yè)務(wù)開發(fā)和交付即可,無需關(guān)注各種復(fù)雜的流水線配置和組件管理。
Jenkins configuration as code實(shí)踐一切配置即代碼,用戶可通過編寫YAML腳本來對(duì)接插件、安全工具、檢查工具、文檔服務(wù)等,任何工具或者服務(wù)均可以通過腳本來實(shí)現(xiàn)對(duì)接?;诖耍脩艨梢詫?duì)版本控制、代碼審計(jì)、滾動(dòng)部署等環(huán)節(jié)跟蹤查看,精確追溯插件集及其版本,使用戶對(duì)各種更改更有信心。
隨著新型云操作系統(tǒng)kubernetes的興起,用戶需要跟進(jìn)學(xué)習(xí)一大堆新知識(shí)、工具和服務(wù),比如如何往容器遷移,如何安裝和實(shí)施k8s,如何將容器安裝到k8s,k8s的生態(tài)系統(tǒng)和工具鏈對(duì)比選型等等,總而言之,適配Kubernetes絕非易事。Jenkins X致力于提供持續(xù)交付云原生應(yīng)用的最佳實(shí)踐,涵蓋構(gòu)建、測(cè)試、審查、變更、協(xié)作等各種最優(yōu)產(chǎn)品。
華為云DevCloud Cloudpipeline實(shí)踐分享
此外,會(huì)上華為專家還向與會(huì)者介紹了DevCloud Cloudpipeline實(shí)踐。華為云專家講道,華為研發(fā)模式先后經(jīng)歷了手工作坊、IPD、測(cè)試自動(dòng)化工廠、CI、CD、DevOps等各種研發(fā)模式的變遷,隨之進(jìn)行了對(duì)應(yīng)的組織和流程變革,并產(chǎn)生了相應(yīng)的工具平臺(tái)來承載這些模式的落地和運(yùn)行。隨著研發(fā)模式、組織、流程、工具的不斷變革,產(chǎn)品交付效率大幅提升,TTM時(shí)長(zhǎng)從過去的1~1.5年縮短至2~6周。一些偏互聯(lián)網(wǎng)化的產(chǎn)品,迭代周期縮短至1周,每天可以并行發(fā)布多個(gè)微服務(wù)。
在這個(gè)過程中,自動(dòng)化的持續(xù)交付流水線平臺(tái)/服務(wù),是最核心的工程實(shí)踐?;诹魉€,以代碼提交到上線的端到端交付周期的縮短作為目標(biāo)驅(qū)動(dòng),使得各服務(wù)自動(dòng)化能力和并發(fā)效率實(shí)現(xiàn)大幅提升改進(jìn),比如手工轉(zhuǎn)自動(dòng)化測(cè)試、容器化構(gòu)建、基礎(chǔ)設(shè)施即代碼、容器化部署、灰度發(fā)布服務(wù)等,確保產(chǎn)品最終的可重復(fù)、可靠的快速迭代發(fā)布。
華為內(nèi)部8萬研發(fā)員工,最初使用的基本都是商用開發(fā)工具,而這些工具很難滿足產(chǎn)品敏捷交付的需求,畢竟產(chǎn)品的敏捷和快速迭代,有賴于工具平臺(tái)的敏捷和快速迭代能力的支撐。因而全面轉(zhuǎn)向了開源,并在保證100%兼容原生開源系統(tǒng)的同時(shí),進(jìn)行云化、服務(wù)化、單點(diǎn)登錄、多region、高并發(fā)、高可靠、高安全、面向不同行業(yè)和解決方案場(chǎng)景等方面持續(xù)強(qiáng)化,構(gòu)筑產(chǎn)品核心競(jìng)爭(zhēng)力。
當(dāng)華為意識(shí)到,華為內(nèi)部面臨的軟件持續(xù)交付工具鏈搭建、運(yùn)維的核心痛點(diǎn),其他企業(yè)也會(huì)面臨時(shí),便將工具鏈對(duì)外提供服務(wù)。希望通過可視化、靈活編排的自動(dòng)化持續(xù)交付流水線及DevOps工具鏈,實(shí)現(xiàn)不中斷業(yè)務(wù)升級(jí),產(chǎn)品分鐘級(jí)發(fā)布上線,助力企業(yè)大幅縮短交付周期,提升交付效率和產(chǎn)品質(zhì)量。
華為產(chǎn)品團(tuán)隊(duì)和代碼規(guī)??缍葮O大,一些典型的大產(chǎn)品,代碼量達(dá)1000+萬行,團(tuán)隊(duì)規(guī)模也達(dá)1000+人,不僅組件多,團(tuán)隊(duì)也多,相互依賴更多。同時(shí),華為大平臺(tái)戰(zhàn)略帶來一個(gè)現(xiàn)象,就是產(chǎn)品通常依賴于另外一個(gè)獨(dú)立BG下的一個(gè)大平臺(tái)產(chǎn)品,且業(yè)務(wù)BG內(nèi)部還會(huì)有自己的小平臺(tái)產(chǎn)品,這樣導(dǎo)致一個(gè)產(chǎn)品會(huì)依賴于好幾個(gè)不同團(tuán)隊(duì)交付的不同平臺(tái)。而由于產(chǎn)品規(guī)模太大,業(yè)務(wù)特性達(dá)數(shù)千個(gè),模塊也往往達(dá)到數(shù)十上百個(gè)。不同部門使用的環(huán)境和組網(wǎng)也會(huì)存在極大差異。
在這種復(fù)雜的環(huán)境下,華為構(gòu)建了分層分級(jí)持續(xù)交付流水線,分為個(gè)人級(jí)、項(xiàng)目級(jí)、子系統(tǒng)級(jí)、產(chǎn)品級(jí)(版本級(jí))、解決方案級(jí)等數(shù)級(jí)流水線,通過流水線編排工作流、觸發(fā)下一級(jí)流水線的執(zhí)行來保障產(chǎn)品團(tuán)隊(duì)和組件之間的協(xié)同交付。
在這個(gè)過程中,配套L1-L4分級(jí)測(cè)試模型,在不同層級(jí)流水線執(zhí)行不同的自動(dòng)化測(cè)試策略,并設(shè)置每個(gè)階段任務(wù)對(duì)應(yīng)的質(zhì)量門禁來判斷是否允許流水線繼續(xù)執(zhí)行。通過多級(jí)流水線的層層防護(hù),使得缺陷發(fā)現(xiàn)前移,有效保障了產(chǎn)品質(zhì)量。
對(duì)應(yīng)于最新的微服務(wù)化的產(chǎn)品形態(tài),配套提供了微服務(wù)持續(xù)交付流水線模板。區(qū)別于傳統(tǒng)產(chǎn)品持續(xù)交付流水線,微服務(wù)流水線在角色權(quán)限上匹配全功能團(tuán)隊(duì)全棧工程師的角色權(quán)限模型,SDE可以從代碼提交并端到端執(zhí)行流水線直至微服務(wù)發(fā)布上線。同時(shí),構(gòu)建出鏡像,并實(shí)施容器化部署、灰度發(fā)布策略、失敗自動(dòng)回滾策略,微服務(wù)可按天、按小時(shí)甚至分鐘級(jí)灰度發(fā)布上線。
針對(duì)靜態(tài)資源提供了持續(xù)部署流水線,流水線從軟件包變更開始執(zhí)行,到跨多region并行部署,實(shí)現(xiàn)多區(qū)多服務(wù)器的靜態(tài)資源包自動(dòng)更新。
在相關(guān)配套技術(shù)和服務(wù)中,灰度發(fā)布能力、極速構(gòu)建、基礎(chǔ)設(shè)施即代碼、配置即代碼、Docker、K8s、自動(dòng)部署、自動(dòng)化測(cè)試、CloudPipeline CDDL(Continious Deliver Domain Language)描述文件等尤為關(guān)鍵。灰度發(fā)布、藍(lán)綠部署等策略可以確保不中斷服務(wù)升級(jí)。增量構(gòu)建、并行構(gòu)建、依賴預(yù)讀與緩存、容器化slave等不斷提升構(gòu)建速度,從小時(shí)級(jí)進(jìn)入分鐘級(jí)。通過容器化技術(shù)使得環(huán)境標(biāo)準(zhǔn)化,有效消除DTAP四大環(huán)境間的差異,減少環(huán)境配置、部署和問題定位成本。CDDL描述語言定義流水線的編排和各服務(wù)接入標(biāo)準(zhǔn)。人工審核可以在自動(dòng)化能力未達(dá)到完全保障質(zhì)量的情況下,增加評(píng)審人來把控下發(fā)布質(zhì)量。
自動(dòng)化一切、代碼化一切、服務(wù)化一切、版本化一切、數(shù)據(jù)化一切、可視化一切,是流水線和DevOps平臺(tái)的基本方向。未來還會(huì)包括智能化一切。同時(shí),DevCloud流水線支持百萬級(jí)并發(fā)調(diào)度能力能力,并提供可視化看板,和任務(wù)健康度(執(zhí)行成功率)、及流水線整體、階段、任務(wù)三級(jí)執(zhí)行時(shí)長(zhǎng)直觀展示。
在DevCloud on DevCloud的dogfooding吃狗糧實(shí)踐分享中,提及在傳統(tǒng)自動(dòng)化測(cè)試?yán)砟钌?,探索在線測(cè)試的新方法和理念、實(shí)踐,并逐步加大在線測(cè)試比重,以便進(jìn)一步縮短TTM、提升產(chǎn)品質(zhì)量。
在演講末端,華為專家基于現(xiàn)網(wǎng)進(jìn)行了“一次修改如何快速上線”的實(shí)戰(zhàn)演示,這種基于現(xiàn)網(wǎng)的現(xiàn)場(chǎng)演示,是需要十分的底氣和自信的,也彰顯了DevCloud華為軟件開發(fā)云服務(wù)的質(zhì)量可信度。
華為正致力于Jenkins網(wǎng)站的中文本地化工作,且一直以來雙方共同探索在社區(qū)等各方面更深層次的合作,希望Jenkins和DevCloud華為軟件開發(fā)云服務(wù)能夠共同為大家提供更好的持續(xù)交付流水線服務(wù)。
最后,“The more you build quality into systems — through automation & shorter cycle times — the more you increase throughput & stability”,用流水線所承載的快速、可靠、可重復(fù)的持續(xù)交付使命作為結(jié)束吧。





























