您好,登錄后才能下訂單哦!
Jenkins已經成為大量公司最常用的一種持續集成工具了,但是目前pipeline的普及程度可能依然低于30%,大量的團隊依然使用自由風格這種笨重的方式,給統一構建過程、構建集中管理帶來極大的不便。筆者通過下面的18個問題來講解一下為什么企業級持續集成服務需要使用pipeline的構建方式。
一、Jenkins2.0的最大改變是什么?
很多人認為jenkins2.0的最大改變是增加了pipeline,實際上pipeline在Jenkins1.0中已經有了這個概念,而jenkins2.0中最大的改變應該是pipeline as code,即以代碼的方式描述pipeline。
二、Pipeline由誰來編寫,由誰維護?pipeline統一管理的優勢?
由于pipeline編寫需要代碼能力 ,并且pipeline的中執行步驟直接影響了最后構建產物的質量,所以建議pipeline需要由持續集成服務部門統一編寫、統一管理。此持續集成服務部門可以由工程效能團隊、測試團隊、ci團隊等兼任。編寫好的pipeline需要標記模版的使用方法和作用,需要相關的文檔或者json串記錄模版的這些屬性,那么業務部門就可以自助的使用這些模版 ,并在無形之間執行了我們在模版中設置的一些質量掃描測試的工作,并收集回了整個軟件生命周期的元數據,用于我們對業務的質量進行評判。
三、Pipeline最佳管理方式?
由統一的持續集成服務部門編寫pipeline的模版和所需的類庫,將這些模版和類庫存放到gitlab等源碼倉庫中統一進行版本控制管理。并將源碼地址配置到jenkins的Share Library的功能中,業務開發人員如需Jenkins進行構建,只需傳遞自己所需的參數,調用持續集成服務部門已經寫好的library,就可以自行設置構建任務了。
Git倉庫保存流水線模版:
Pipeline 中引用模版:
四、腳本式pipeline和聲明式pipeline如何選擇?
聲明式pipeline比較簡單,也是Blue Ocean支持的語法格式,但此種pipeline在jenkins2.5之后才支持,成熟度有待發展,是官方推薦的方式。
Jenkins2.0最早支持 的pipeline,如果對Groovy語法很熟悉,可選擇腳本式pipeline,可以實現更復雜的邏輯。
五、不會pipeline的語法怎么辦?
Jenkins2.0中提供了流水線語法查詢的功能,可以自動生成流水線代碼片斷,直接拷貝粘貼就可以
六、Pipeline中要涉及的基礎工具鏈包括哪些?
Pipeline一般的應用是來做集成構建的,也就是把源碼打包成制品,所以pipeline中涉及的最基礎的工具一定是源碼倉庫和制品倉庫,以及構建過程中使用的每種語言的打包工具。
源碼倉庫:用于管理源代碼,常用gitlab、github、svn等
制品倉庫:用于管理制品,常用Artifactory。
打包工具:如mvn、go、npm、docker等
七、Pipeline中涉及到的進階工具鏈?
Jira:關聯需求信息
Sonarqube:代碼靜態掃描
Xray:制品漏洞掃描
JMeter:性能測試
Junit:單元測試
JaCoCo:代碼覆蓋率
Ansible,saltstack:發布
八、Pipeline中需要設置的質量關卡包括什么?
質量關卡,即構建過程中的質量門,為確保每一個版本都能高質量發布,建議將以下指標與部署包關聯,作為整個pipeline構建過程的質量關卡,如果有未達到的情況,記錄并處理。關卡包括:
代碼靜態掃描的issue數量
80%以上的單元測試覆蓋率
漏洞掃描的結果
開源許可證掃描
不同環境是否具備不可變基礎設施
集成測試是否通過
性能測試結果
較高的接口測試覆蓋率
九、什么是一次構建,多次部署?如何在pipeline中實踐?
DevOps成熟度標準中建議做到一次構建,多次部署。目的是為了在測試環境測過的包可以在不改變任何環境和依賴的情況下發布到生產線上。發布時重新打包往往會因為源碼版本變更、基礎環境變更等因素導致發布事故。
最佳實踐是使用制品提升倉庫級別的方案,使用Artifactory可以用起promotion的屬性進行制品提級。
十、如何在pipeline中設置構建參數?
Jenkins支持參數化構建,包括憑據參數、字符參數、密碼參數、布爾值參數、文件參數、文本參數、運行時參數、選項參數等。在pipeline中設置方法可以直接在片斷生成器中生成。(語法獲取可以使用片段生成器,搜properties)
十一、如何在pipeline中進行并行構建任務?
Jenkins pipeline支持并行構建任務,解決多個環境進行構建,或多個環境進行發布的場景。使用串行十分影響效率,采用并行方式,通常是將命令下發給不同的agent,節省構建時間。(語法獲取可以使用片段生成器,搜parallel)
十二、如何在pipeline中優雅的使用密文?
Pipeline 中經常涉及到這樣一種場景,需要調用其他系統的api,難免會使用到一些key或者密碼 ,但是這些信息直接明文寫到pipeline中非常不優雅,并且存在很大的安全隱患,所以在我們不希望展示這些key的場景下,可以使用Jenkins的憑證特性,解決這種問題 。(語法獲取可以使用片段生成器,搜withCredentials)
十三、如何在pipeline中設置定時啟動job?
某些特定場景下,如每天凌晨需要對項目進行一次clean的全量構建,占用的時間和資源較多,我們可以使用Jenkins的構建觸發器功能觸發定時任務進行構建。(語法獲取可以使用片段生成器,搜properties)
十四、如何在pipeline中設置通過輪詢代碼倉庫啟動job?
此觸發方式使用的較少,最佳實踐以webhook的方式觸發構建更方便,但是在少量特殊場景,如每天需要構建,但是版本不發生變化時不構建可以應用此觸發器
十五、如何在pipeline中設置通過其他job完成觸發啟動job?
在集成測試的時候需要大量的此類操作,公共組件構建了最新的版本要同時觸發所有依賴他的構建項目進行構建,確保此版本能正常被業務應用使用。
十六、如何在pipeline中設置通過git的webhook觸發啟動job?
通過Git的鉤子(webhook)功能觸發Jenkins構建任務,這種構建模式比較常見,DevOps成熟度標準中也把這一條當作三級評估的準則,是否每一次提交代碼都能觸發完整的構建過程,決定了我們持續集成的速度和效率。
十七、如何將pipeline與流程審批系統對接?
為實現需要人工校驗是否繼續進行后續流程,對接審批流程等操作,Jenkins支持了構建等待的功能,可以在構建過程中暫停任務,等待下一步信號。(語法獲取可以使用片段生成器,搜input)
十八、什么情況下需要使用多分支pipeline?
在實際的項目中,往往需要多分支同時進行開發,如果每一個分支都創建一個jenkins項目 ,管理起來非常不方便。這種場景下需要使用多分支pipeline。常使用when參數來判斷分支。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。