
【以下為分享實錄,有删節】
背景訴求與推進政策
方案背景
一站式DevOps解決方案緻力于順暢高品質地傳遞有效價值:
順暢指傳遞過程中不存在反複和阻礙,快速完成;高品質表示傳遞過程中産生曲線較少,傳遞後線上故障較少;有效價值指做出的需求真正是使用者想要的。
當今世界是個節奏加速的世界,大魚吃小魚,快魚吃慢魚,每家公司都多少與軟體業務相關聯 ,軟體傳遞和創新已經成為企業核心競争力。随着業務發展和市場競争的加劇,對軟體研發效能的要求不斷提高。同時但随着ioT和新零售等業務場景出線和相關協作複雜度的提升,研發效能反而有降低的趨勢。
網際網路時代下企業的DevOps訴求
網際網路時代下,企業的DevOps訴求主要分為以下六個次元:
平台化與相應融合:每個公司都有很多平台,衆多平台在企業内通常是封閉的孤島,缺乏良好的資訊溝通,公司有相應訴求來打造契合企業一站式的研發協作平台,打破孤島 ,彙作資訊互通。
研發模式多樣化:研發模式指需求管理,其服務端比較适合持續精益釋出模式,app端則比較适合疊代釋出模式,多種研發模式并存是最優解。同時由于團隊之間水準的參差不齊,也要對應提供多種模式,不能一刀切。企業的研發模式多樣化并存和形成研發流程統一管控規範看似很沖突,卻是企業研發中的真實訴求。
品質防控和品質内建:産品交給研發的需求是否達到相應品質?開發交給測試的代碼是否充分測試和了解?這時就存在一個品質内建的問題,為了避免garbage in,garbage out的尴尬局面,就要體系化建設代碼品質,構築自動化回歸方面的品質體系建設。人工測試曾經是主流的模式,但現在随着自動化測試的發展,代碼掃描檢查做相應單元測試,回歸接口測試等一系列自動化測試都可以進行相應的品質體系建設。
效率提升:建設研發基礎平台,适配相應技術中台和進行一站式傳遞,利用環境管理和測試與釋出的自動化都能一定程度滿足相應的效率提升訴求,傳統的手工模式已然過時。
資料度量:從需求代碼釋出,復原,品質等一系列資料平台記錄,到資料報表的展現,才能發現傳遞過程中問題出現在哪,進而基于資料進行改進。
研發資産沉澱:将個人能力沉澱為組織能力,需求上的溝通與協作,代碼品質,測試資産,釋出與建構的品質和相關線上故障等都是公司軟體研發資産,進行需要沉澱。
Devops落地推進政策
這一政策主要分為四個次元闡述:
平台化:企業建設項目管理、研發、測試、釋出一站式平台,各個孤島打通進行相應協作,将所有資料沉澱到線上并基于資料持續改進。
标準化:做到需求變更規範标準化:例如準入準出需求。研發人員代碼規範标準化:例如代碼規約,定義方法等。編譯打包規範标準化:要求一次相同代碼在所有環境下打包一緻,不能出現這次A包下次B包的問題。自動化部署流程規範标準化:如果沒有相應紅線品質規範,手工去做相應釋出的觸發很容易引發線上故障,産生事故。
自動化:DevOps推進過程中希望一切都由機器操作,進而展現自動化速度快的優勢并降低出錯率。自動化方面從編譯打包自動化,代碼掃描自動化,環境管理自動化,部署自動化和測試自動化五個次元實作DevOps落地。
可視化:可視化的目的是希望一切資訊對所有人透明:例如研發效能,品質,自動化資料度量等。再按照可視化的資料進行相應改進。
雲效與平台能力
雲效平台介紹
雲效是阿裡巴巴的企業級一站式DevOps解決方案,源于阿裡巴巴先進的管理理念和工程實踐,緻力于成為數字企業的研發效能引擎。雲效提供從“需求->開發->測試->釋出->運維->營運"端到端的協同服務和研發工具,支援公共雲、專有雲和混合雲多種部署形态,通過人工智能、自動化技術的應用助力開發者提升研發效能,持續快速傳遞有效價值。可能有人會問一站式解決方案能不能隻用其中的一部分,答案是肯定的,雲效支援單獨使用協作,code和釋出的流水線等相關子產品。
雲效存在先進的管理理念,智能的技術應用,全方面的安全保障,高效的過程傳遞,高效的團隊協作以及靈活開放的産品政策,衆多方面我們将在下文中逐一進行後續介紹。
雲效平台能力
雲效具備六大子產品構成平台能力:
前兩個子產品是項目協作,包括需求管理子產品和品質管理子產品。需求管理又分為精益模式和疊代模式,品質管理則展現在測試用例庫的管理。針對每個版本釋出測試計劃,将測試用例拷入進行測試,對産生缺陷做缺陷跟蹤,待版本疊代上線後做品質分析。
第三大子產品是代碼托管平台,主要進行代碼托管,代碼送出以及分支管理,研發人員送出代碼後能夠自動觸發掃描,并在通過後進行代碼評審和分支合并。
第四子產品是流水線,開發寫完代碼觸發流水線做版本建構 建構完做版本正式環境部署 流水線過程中會建構出相應包,該包觸發第五個子產品制品倉庫,它同時支援公庫與私庫, 私庫内具備二方包和建構出來的産物,并将産物存儲到OSS上或鏡像倉庫内。
第六個子產品是知識庫管理,涵蓋産生需求過程中的需求文檔,研發做詳細概要設計産生技術文檔,會議讨論紀要,将這些記錄用于改進總結和沉澱。
是以,雲效是內建阿裡巴巴最佳實踐、一站式軟體研發全生命周期管理的協作平台。
一站式DevOps解決方案與詳細介紹
一站式DevOps解決方案
一站式DevOps解決方案分為六個步驟,從雲效看闆模式的需求管理開始,涵蓋産品營運的需求回報,産品經理的産品需求組織規劃,并将基于傳遞協作的看闆協作任務配置設定給研發,由研發人員接到需求後執行任務。
而後建立特性變更分支,完成代碼并git push到遠端倉庫,進行代碼的自動監聽,掃描以及評審,并在完成後進入特性分支監聽觸發并形成觸發流水線,将編譯建構産物上傳鏡像倉庫。
随後開發驗證,SIT驗證,預發驗證,上線稽核,以及生産釋出等環境觸發内容則傳遞Kubernetes做相應部署,并在接下來從鏡像倉庫拉取docker 推送到項目環境,SIT環境,預發環境和生産環境中,前三者面向測試人員,而生産環境則傳遞使用者進行通路,并進行最終回報,整個解決方案的體系中每一步都存在對應的回報機制,進而能在出問題及時回報以進行品質管理和缺陷管理。
雲效的一站式DevOps解決方案存在一套1-1-1的理念目标:
研發從寫代碼到送出縮短到1小時釋出前置時長;每天至少有1個可釋出版本達成持續內建;每周至少能釋出1次保證高持續釋出頻率。下面是子產品實作詳細介紹。
項目協同-看闆模式
其一是端到端的價值傳遞過程,包含需求池,已選擇,分析中,待釋出和已釋出五個環節,是從需求收集到需求釋出的一個整體的端到端傳遞過程。過程中涉及的産品經理,開發,測試,運維人員等各個角色的前後職能都得以拉通,并将需求的進度展示在同一看闆上。 并保證了需求中每個卡片都是使用者價值驅動的,同一個需求可以拆分前後端,安卓與iOS等子功能,形成左右子產品的對齊。
項目協同-疊代模式
有疊代需求後,例如一個兩周更新一次的app,即可創造對應的疊代規劃。例如圖中的Sprint01.08-01.15是版本時間,36/39則是任務數,它們構成了整體的傳遞過程,并保證了疊代建立完成後能夠規劃疊代,同時執行者和狀态都一目了然。
測試管理
測試用例部分是針對産品來說的,測試人員用「測試用例」管理沉澱用例内容,用例
可以被重複使用,減少測試人員重複工作量,提高企業測試用例編寫規範。
測試計劃則針對每個釋出版本,與特定内容對應,例如功能測試和回歸測試等,測試人員在具體項目内用「測試計劃」做測試工作的執行過程管理,幫助測試人員對測試過程進行記錄和協同,可以全面提升測試效率和軟體傳遞品質。
發現缺陷後則進行缺陷管理,測試人員通過自定義的工作流來管理缺陷「送出
-修複-驗證關閉」流程,強制流轉規則保證資訊的完整性;通過缺陷類型、嚴重程度、優先級、标簽、等字段定義缺陷屬性,進行細分管理,并配置設定給對應的開發人員進行修複。
通過測試管理的用例,計劃,缺陷三個管理方向,能夠串聯測試人員的測試計劃,提高相應測試效率和軟體傳遞品質。
代碼安全
代碼安全的構築分為三層,最底層的資料安全,指代碼存儲在code平台的資料具備足夠的安全性,做到自動快照和分布式存儲,并置于最高等級機房内,保證資料傳輸的安全與加密,并由阿裡安全位攻擊防範措施保駕護航。
中層是人員安全,這裡的人員主要是指雲效從業人員,做到伺服器權限嚴格管控和全操作留痕,同時采用自動化更新減少人工操作量,并定期審計確定及時發現問題。
上層分為兩個次元,即企業行為安全和企業代碼安全, 這兩個次元又可細化成事前,事中,事後三個方向。
事前防控包括IP白名單通路:非IP無法通路和進行代碼處理;企業級,git組和git庫的三級權限控制;離職人員權限的清理。
事中預警包括代碼掃描敏感資訊:代碼中是否有資料庫密碼關鍵key;敏感行為的監測 :是否存在頻繁下載下傳代碼等; 高風險通知:例如删庫,公開庫等操作能即時讓負責人知情。
事後追溯則主要是形成可參照資訊記錄,供審計和追溯,包括庫管理日志,代碼行為日志,和管理者設定日志,進而保證代碼放在平台上的安全性。
代碼通用協作方案
研發人員和代碼打交道,主要對象是遠端倉庫代碼,接到研發任務後即可建立特性分支,再在遠端 clonepull到本地完成代碼,并在本地送出後再 push遠端,每次push都會自動觸發代碼掃描,掃描通過後才能通過合并請求和觸發代碼評審,并在過後再自動合并到代碼master分支。
代碼評審分三個次元:輕CR:隻要送出和并請求通過即可,沒有評審過程; 重CR:為保證任務品質需要人員介入,由團隊資深同學評審;自動化輔助CR:用于提高效率,隻要代碼掃描沒有問題就自動合并代碼。
流水線方案
流水線分為持續內建和持續釋出兩個部分。持續內建是由開發者送出代碼,或合并其開發分支到內建分支,觸發釋出流水線的運作。軟體自動完成代碼掃描、軟體建構、部
著到測試環境,完成內建測試。如果成功完成驗證,自動合并到待釋出分支。目标是每天至少存在一個待釋出版本。
持續釋出則是軟體達到可釋出狀态後,通知釋出負責人,釋出到生産環境。同時準備復原預案。最終可釋出版本的釋出部署由釋出視窗及人工稽核來決定。目标是一周至少一次。整個流水線方案過程中都可以用釘釘消息進行溝通,并回報釋出結果給研發人員。
ECS部署
前面和通用步驟一緻,差別在于編譯和建構。編譯出的部署包存儲在包伺服器上,測試部署時觸發腳本進行部署,從伺服器getpull包,到機器上觸發Agen進行部署。部署政策分為分批首批暫停,分批每批暫停和分批不暫停三種,還支援快速復原。生産發現問題并非線上上定位和修複,而是直接快速復原,線上下驗證和進行日志分析,不影響線上業務,整體部署環境支援阿裡,自建IDC和其他雲,硬體上支援ECS實體機神龍等各種形式的機器,并可以劃分出項目,SIT,預發和生産四大環境。
K8S部署
前面也與通用步驟一緻,差別隻是編譯出建構的産物是鏡像,并将其追蹤到鏡像倉庫。部署的時候會觸發kubernetes,從鏡像倉庫中拉取docker再部署到生産環境中。部署政策支援滾動更新,藍色部署,分批第一批暫停和分批每批暫停四種。機器上支援阿裡雲K8S和原生自建K8s,環境類似都是項目,SIT,預發和生産四個,隻是區分于部署的内容非包,而是鏡像。
回報改進機制
回報機制分為日常品質和傳遞效能回報三個方面:日常回報主要基于看闆是否順暢,構成時是是否有阻礙與反複。品質回報旨在回報故障和缺陷的多少和故障修複是否及時。 傳遞效能回報主要分為研發效能,開發需求傳遞等幾種次元。
基于這些回報定期進行的分析可以從疊代或者月度review會議的形式着手,并在分析後制定改進action,從易到難落實流程操作改進,基礎設施改進,代碼設計改進,傳遞和測試守護改進以及人員技能的改進,來保證改進行動的可持續性。每次改進的action不宜設定太多,防止落地效果變差,同時,宜将每個action都落實到個人保證産生效果,進而形成持續的回報,分析,改進的PDC循環。
雲效DevOps教育訓練
針對人員技能理念,阿裡雲有對應的教育訓練和解決方案包,幫助企業不僅在工具層面建好DevOps,同時能做到持續改進過程中,利用最佳實踐和解決方案輔助提升研發效能。這套教育訓練共有兩大系列,八大課程,七種方案的解決方案包,可以聯系相關負責人進行咨詢。
三大案例分析
案例1:星漢博納
在星漢博納上,雲效實作了一套持續的改進過程,做到了過程有追溯,資産有沉澱,改進有依據,使得原本散落的各個企業平台能在端到端中實作打通。
首先是需求收集和産品管理,由營運人員收集需求池進行任務排期和項目管理,并使需求透明化,讓提需求的人能看到進展,研發和測試人員能看到排期,需求排期後轉入團隊傳遞看闆進行疊代,版本與缺陷方面的管理,再交由開發人員做産品的代碼編碼和測試用例實作,并接下來将代碼送出進代碼庫,做code review和測試管理。
圖像中曾經隻作為規劃功能的兩條虛線:代碼commit關聯工作項與缺陷,發現狀态自動同步工作項和缺陷目前都已經全部實作,代碼通過後繼承觸發應用內建釋出的流水線。測試服務方面支援測試用例管理和根據用例計劃缺陷自動化接入SaaS服務,環境上也做了日常環境,預發環境和生産環境的劃分。
通過雲效一站式解決方案,星漢博納成功實作了追溯過程,沉澱資産和按需改進的目标。
案例2杭州幻熊
杭州幻熊案例核心的功能實作在于流程圖右上角的方框:達到每日的持續傳遞,将單應用釋出時間從半小時縮窄到兩分鐘,将整個産品的釋出時間從10小時縮窄到二十分鐘。這其中雲效系統從代碼平台,流水線和環境管理三個方向切入。
代碼平台方面,開發人員先push代碼到特性分支,并自發觸發代碼掃描,通過後進行MR,代碼評審與合并,并內建分支。
流水線分則為持續內建與持續釋出兩條。內建分支後,自動觸發監聽進入持續內建流水線,包括編譯建構,測試部署,測試驗證,驗證通過,并最終代碼合并到釋出分支,此時需要核心研發人員或運維人員觸發部署持續釋出流水線:共有編譯建構,預發部署,預發驗證,驗證通過,釋出稽核,生産部署六個步驟,并最後通過釘釘回報,進而在測試預發和生産三個環境都實作規範化和自動化。
案例3商米科技
這個案例中,被替代的方案分為需求流和代碼流,需求流的疊代模式存在時間盒,疊代計劃批量進出,整個過程位于黑盒,隻有實際測試釋出後才能發現問題,導緻釋出經常延期,不僅品質不高還需要大量人員的加班加點。
代碼流則受限于環境準備,本地開發從master拉取分支寫代碼會顯著延長調試時間,每天隻能進行兩次push到特性分支,同時人工觸發聯調。每個版本都要等環境,手工維護拉取分支編譯觸發修改腳本要一天以上,再去做相應的預釋出還需要1-3天測試,提測後合并釋出要兩周一次,特别冗長。
而如今,在雲效進行DevOps改進後,商米提出了1-1-1的三個願景目标:每個組每周至少釋出一次,每天都有可釋出的build,每次釋出前置時長1小時。
由目标作牽引,雲效将新方案分為需求價值流和代碼變更流。需求價值流一改原本疊代時間盒在批量疊代需求多過程不透明的缺點,将疊代過程改進為單個需求價值的流動,實作開發就緒→開發中→ 測試中→ 待釋出→已釋出全部環節的可視化。任何需求有問題都會即刻暴露,并可以在目前版本不做釋出,隻釋出達到版本的需求。
代碼流同樣進行了很多改進:從本地開發到get push自動觸發,研發人員寫完功能就可以即時進行push,不再受限于一天兩次。而後自動觸發相應的代碼掃描,這些掃描支援增量,速度很快,通過後開發人員可以在五到十分鐘實作code review,再由開發者進行變更驗證,随後的自動化環境部署可以在兩到五分鐘内完成。
同時,雲效還增加了自動化測試的步驟,測試通過後會自動觸發SIT環境,即測試人員需要測試的環境,自動化UI測試以及手工測試接續在一起能夠在一小時左右完成,并随即觸發UAT預發驗證,由運維審合釋出到線上,進而實作1-1-1的願景目标。
手把手帶你完成一個項目
本文整理自阿裡巴巴雲效研發進階解決方案工程師圻心對實踐性搭建DevOps平台快速提升研發效能的精彩分享;
由阿裡雲開發者社群志願者徐海軒整理。
現在開始開始介紹産品的實操示範,圖中頁面就是雲效2020新版産品頁面,重點介紹代碼平台,項目管理以及流水線。
利用左邊dock登入個人工作台,打開左上角可以看到産品,包括知識庫,文檔托管平台,流水線,代碼管理,制品倉庫,測試管理(管理測試計劃和測試用例),工作台(可以了解為項目管理平台),企業成員和企業管理背景是企業成員級的設定。
項目管理内容簡單介紹
剛開始第一步建立項目:右上角點選加号進入項目菜單,能看到這裡提供了多種項目模闆。産品研發類企業選擇研發分組,這裡有很多模闆,包括DevOps研發工作流,靈活疊代研發工作流,需求管理工作流。缺陷管理工作流,假設你隻需要存放缺陷的話就可以選擇缺陷管理模闆,以此類推。
介紹一下DevOps模闆,選擇後即可提供一站式端到端的場景,你可以針對需求界面建立分支 分支送出可以自動關聯流水線,都可以在需求空間下看到完成這樣的場景
重點介紹靈活開發場景 點選進入一個靈活開發項目空間 可以看到需求任務疊代等目錄選項 首先從日常工作開始,首先會基于一項需求開始生命的一個開端,提前做了一些demo資料,以筆記應用作為需求,左上角可以看到針對筆記應用的需求分類,例如筆記本,筆記操作,權限,模闆等。
有日常需求即可按加号建立,在需求界面裡可以設定需求的起止時間,關聯疊代,分類和标簽等等,如果需要做一些産品PRD等輸入或管理一些文檔,可以通過關聯内容的方式添加進來。
接下來看需求池頁面,此時已經有大量需求,接下來針對池内的需求,圍繞着業務目标或需求優先級做疊代規劃.
此時右上方點選前往【疊代】規劃需求按鈕,可以看到提前建了一個Sprint002的需求疊代,并已經關聯了一部分需求在内,此時即可進行需求疊代開發工作。
如果第一次去新規劃疊代,則可以在疊代視窗右上角點選加号,以建立新疊代,可以自建名稱,選擇傳遞時間和負責人 剛建立好的頁面是空的,此時點選規劃疊代即可開始規劃。
此時可以看見左右各存在一個框區,左側是需求池中未規劃的任務,可以快速将這次需要納入疊代的需求加入到本期的疊代版本中,這樣就可以快速的建立新的疊代版本,如果基于新的疊代版本已經規劃好了,需求已經錄入了,接下來就可以做一些具體研發任務的拆分。
比如筆記支援移動到不同的筆記本,打開需求即可圍繞需求指派不同的子任務,例如Android Web 和iOS端的開發,就可以将這些任務配置設定給開發人員,進入任務開發實作的階段。
至此,實作了從需求池開始的需求規劃到納入疊代管理這部分的過程,如果進入到開發的任務互動過程中,那麼開發任務完成後下一部就要開始提測了。
接下來介紹測試方面的内容
點開dock能看到測試管理子產品,主要是管理用例庫的,點選右上角即可建立筆記任務的用例庫空間,可以編寫測試用例,定義不同場景分組進行規劃,因為這是企業級的用例,是以進行管理後可以直接在相關項目中對這些用例庫進行調用。
接下來回歸項目空間,很容易看到上方有一個測試計劃,點選測試計劃服務頁面,首先,圍繞sprint002這樣一個疊代版本,可以看到左側分好組的不同測試用例,可以基于分組建立用例,也可以根據之前做好的用例庫規劃用例。
建立用例後,緊接着就是對用例進行相關評審,可以在評審中對用例進行确認,已認證即可選擇已認證狀态,未達成一緻則可以調成未通過等待後續優化,在日常的開發送出到測試環節,測試驗收過程中,可能會圍繞用例發現一些問題,比如存在未通過的用例,此時就可以點選右上角送出缺陷來統一評審和進行狀态修改,包括修改用例等級等
說完了測試用例和測試計劃,缺陷服務也是測試過程中很常用的一個子產品。
這裡可以針對缺陷進行分類,比如圍繞需求的不同進行分組,便于直覺的進行檢視。
還有一些其它的服務能力,例如日程能力,這裡可以添加一些項目的周會或其他會議。設定日程時間,進行提前提醒,建立好的日程會被劃入月曆
在月曆中即可清晰的檢視個人的工作日程和會議安排等内容。
然後是統計能力,這裡主要圍繞着一些度量資料做解讀和分析。
統計右上角有建立項目報表的功能,它支援多種報表模式,例如你比較關心一些效能分析方面的名額,就可以啟動傳遞周期報表,需求控制圖或者需求累計流圖
缺陷統計中,同樣可以根據場景和訴求建立各種報表,例如缺陷的變化趨勢,累計趨勢以及缺陷按疊代分布等,便于去分析問題和進行下一階段的計劃改進。
結束統計方面,接下來看後邊的知識庫:
知識庫是一個文檔管理的平台,能夠進行對外釋出,即企業外部成員可以通過外部通路位址快速檢視資訊,如果項目涉及和其他方的合作,就可以通過知識庫的方式傳遞和共享内容。
在知識庫中可以管理産品需求,會議紀要等日常文檔和企業知識沉澱。
代碼管理詳述
這裡就是代碼管理平台的頁面,對代碼管理的介紹分兩部分,一個是企業級代碼平台設定,另一個是使用者級的代碼平台設定内容。我們第一時間即可感受到平台的安全性,這一安全性在事前防範,事中應對和事後追溯方面都有相應的展現。
首先來看企業級的代碼設定内容,首先是通用功能,可以設定建立代碼庫的權限,
哪些人或角色可以建立代碼庫或代碼組,決定代碼庫是否公開。
安全層面可以進行IP白名單的設定,例如設定在某一IP網段内才允許進行代碼庫通路,令非IP白名單内位址無法進行克隆,下載下傳,送出,合并等正常代碼操作。
安全層面的第二部分是安全通知,對代碼庫的所有操作都是留痕的,比如公開原本私有的代碼庫,删庫等等,這些過程都可以根據需求選擇進行站内或郵箱通知。安全通知記錄可以用右上角的導出鍵導出,一次最多一萬條,友善企業用于分析和排查。
回到代碼管理首頁,還有一個重點内容是審計日志。
第一個是庫管理日志,這個日志中可以看到基于庫曾經進行的操作,例如添加或删除成員,目錄操作,以及成員權限的更新都能一覽無餘。
代碼行為日志可以看到克隆行為曆史,比如發現有人在某段時間内大量克隆很多和業務不相關的代碼,就應當重點關注這一個體。進而起到事前預警和通知的作用。
類似的還有組管理日志和企業管理日志,所有的日志都可以用于安全審計并支援導出。
代碼庫簡述
這裡是幾個建立好的Demo代碼示例,進入一個例子。
首先介紹設定菜單内的一些能力,點選右上角設定,點選內建與服務進入內建服務界面,這裡介紹和代碼品質高度相關的能力,例如Java開發規約和敏感資訊監測等,這一部分企業可以根據自身需求決定開啟或關閉。
很多企業都非常關注品質話題,它是效能提升的重要保障,通常情況下,代碼品質更受測試人員關注,但研發過程中提前重視這一過程将非常有利于軟體傳遞品質的提升。這時就可以前置部分檢查,例如開啟java規範掃描或敏感資訊檢測等,對此可以設定一些觸發方式,如代碼送出觸發和合并請求觸發,作為送出的卡點要求。
接下來介紹分支設定,分支設定中主要想介紹代碼評審能力,主要是用建立保護分支的方式進行歸納,例如可以建立master保護分支,并調節推送規則,規定那種角色的人員在完成怎樣的動作後才能push到分支上,達到送出的标準。
例如可以開啟合并前的代碼評審,這裡通常不允許建立者通過。評審支援普通模式和CodeOwner模式,普通模式中可以設定評審通過的最少人數和預設的評審人員。下方是可供選擇的合并前卡點要求,例如必須經過Java預約掃描或敏感資訊檢測。
接下來用執行個體示範開發從拉取分支到代碼和并請求的場景,首先進入分支界面,從master進行拉取建立一個分支并确定。
快速基于此分支送出檔案後,能夠看到剛剛建立的分支正在運作,進行Java開發規約以及敏感資訊的掃描,點選即可看到詳細的掃描内容,掃描多少檔案,是否出現問題。這一步可以用來進行問題分析,确認無誤後即可進行合并請求的建立。
進入合并請求界面,可以看見設定的剛剛的卡點要求需要通過,對應着正在進行的自動化檢查和代碼的人工評審。此時可在界面右側添加評審人,此時相關評審人就會收到通知,并可以對評審進行通過。
稽核通過後,即可點選右上角合并選項進行送出,完成整個合并過程。
流水線的能力
進入流水線flow頁面後,就能看到産品流水線的工作台,預設定位在個人參與的流水線中,并可以修改定位至全部流水線,這裡可以進行一些個人權限的控制,例如誰僅能檢視流水線,誰可以進行編輯。
這裡介紹一個主機部署的場景,這是一個持續內建的流水線,分為測試,建構,環境部署,測試驗證,在通過後合并到釋出分支,并轉進持續釋出的流水線。
持續釋出流水線主要作用于生産環境,從建構上傳開始,到預發環境部署,預發環境驗證,驗證通過後進入釋出稽核和正式環境的部署。考慮到快速建立流水線标準版本的需求,可以在右上菜單中将場景快速儲存流水線模闆。
為了處理釋出完成後線上出現問題的情況,平台也提供了一些快速復原的能力,點選右上角復原,它會定位到部署的所有曆史版本中,點選某一所需版本即可進行相應復原,進而回到從前的穩定的版本。
最後快速示範一下建立流水線的過程,回到流水線主界面,點選右上角建立流水線,這裡可以看到許多設定好的模闆,初次使用時可以在左側根據開發語言進行選擇,例如根據Java主機部署場景快速建立。
流水線的出發源可以是業界所有的主流代碼倉庫,例如Codeup,Github等,也可以綁定Jenkins賬号進行任務對接。
添加流水線源時可以開啟代碼源的觸發機制,做到送出代碼,建立tag或完成合并請求後立即觸發流水線,儲存即可看到初步搭建好的流水線場景。
流水線支援并行任務,如果需要多任務在流水線同一環節并行完成,可以選擇并行任務,左側有豐富的階段任務組可供添加,例如加入一些安全類的掃描或靜态掃描。
打開流水線的部署階段,這是一個主機部署的例子,是以要首先選擇制品作為建構完成的産物,主機組就是關聯不同環境的機器資源,首次配置需要建立,支援的主機類型有阿裡雲的ECS和非阿裡雲的公網自有主機。
這裡可以根據應用環境的不同進行主機組的劃分,例如測試環境和日常環境下。後續會加入一個輕應用的概念,通過應用的不同進行主機資源和環境的管理。
主機組選擇後即可進行其它配置,例如部署腳本的輸入,暫停方式的選擇,是每批暫停或者僅首批暫停,可以根據企業要求靈活進行配置。
同時支援釘釘插件功能,拷貝好webhook位址即可接入釘釘機器人通知,在流水線建構成功,失敗或取消建構時可以即刻分享到釘釘群内進行通知,便于快速排查定位或解決問題。
整個流水線全部編輯完成後,點選儲存并運作即可進入直覺可視化的運作頁面,首次可能會有一個較長的運作過程,後續速度會明顯加快。