
James Rawlings 在DOIS 北京大會上分享Jenkins的現場照片
Jenkins X 是為雲原生應用重新構想的CI / CD工具平台,受 DevOps 狀态報告的影響很大, 同時也深受最近由 Nicole Forsgren,Jez Humble和 Gene Kim 聯合編寫的《Accelerate: The Science Behind Devops》一書的影響。
多年來,來自DevOps領域的鼓舞人心的思想領袖和資料科學家分析了來自現實世界團隊群組織的資料,其中“Accelerate”這本書為Jenkins X推薦了正在實施的許多功能,以便使用者獲得已被科學證明的許多優勢。
我們已經開始為 Jenkins X 目前可用的功能編寫文檔,并将繼續提供更多功能。
來源:感謝tracymiranda的圖檔
Weaveworks人員創造了我們喜愛的GitOps這個工具。對環境的任何更改,無論是新應用程式,版本更新,資源限制更改還是簡單的應用程式配置,都應該作為對Git的提出Pull請求,對其進行檢查,這就像開發環境的CI形式一樣,然後由團隊準許這可以控制進入相關環境的内容。
我們現在可以啟用分支,并對環境的任何更改具有完全可跟蹤性。
相關加速功能:對所有生産構件使用版本控制
Jenkins X 将在安裝過程中自動建立Git支援的環境,并可以輕松使用jx create environment添加新環境。此外,當通過quickstart(jx create quickstart),基于Java的SpringBoot(jx create spring)或導入現有應用程式(jx import)建立新應用程式時,Jenkins X将自動添加CI / CD管道并設定jobs、git repos和webhooks以啟用自動部署過程。
開箱即用的Jenkins X建立了Staging and Production(這是可自定義的)永久環境以及Pull Requests的預覽應用程式的臨時環境。
我們正試圖在變更合并到主分支之前,為變更進行盡可能多的測試,安全性驗證和實驗。通過使用臨時動态建立的預覽環境,任何拉取請求都可以建構和部署預覽版本,包括提供給下遊可部署應用程式的庫。這意味着我們可以與參與代碼審查,更好地與所有團隊測試和協作,以便決定變更是否可以上線。
最終,Jenkins X希望提供一種約定:開發人員,測試人員,設計人員和産品經理可以盡可能確定将更改合并到主資料庫時按預期工作。我們希望确信提議的更改不會對任何服務或功能産生負面影響,也不會使預期提供的價值打折。
預覽環境變得非常有趣的地方是,當我們能夠通過成熟度和信心的各個階段推進PR時,我們開始将一定比例的實際生産流量(如beta使用者)引導到它。然後,我們可以分析建議的變更的價值,并使用假設驅動開發分析可能随着時間的推移運作多個自動化實驗。這有助于我們更好地了解變更在釋出給所有使用者後的執行情況。
相關加速功能:培養并激發團隊實驗
使用預覽環境是引入更好的測試自動化的好方法。雖然Jenkins X支援這一點,但我們還沒有針對預覽環境運作自動化測試的示例。
一個簡單的測試是確定應用程式啟動正常并且檢查Kubernetes一段時間的活動是否通過。這涉及到相關加速功能:實施與測試自動化相關的加速功能:自動執行部署過程
在軟體開發中,我們習慣于在多個環境中工作,直到将變更推到線上生産環境。雖然這看起來像往常一樣,但是如果出于任何原因,通過某些過程認為變更對主分支的合并沒有發生,那麼它可能會導緻其他變更的顯著延遲。随後的送出将被阻止,并可能導緻需要緊急送出到主分支的變更的延遲。
如上所述,Jenkins X希望在合并到master之前驗證任何更改和實驗。我們希望在更新之前将暫存環境中的更改保留在那裡很短的時間,最好是以自動方式進行。
預設的Jenkins X管道通過環境提供部署自動化。這些可以自定義以滿足您自己的CI / CD管道要求。
Jenkins X建議Staging應盡可能地反映生産環境,理想情況是使用服務網格将實際生産資料隐藏。這也有助于在預覽中開發更改,我們可以在分段中連結到非生産服務。
相關加速功能:自動執行部署過程
Accelerate一書發現,使用基于主幹的開發和短期分支的團隊表現更好。這一直适用于Jenkins X核心團隊成員,是以這是Jenkins X在設定Git存儲庫和CI / CD作業時實作的一項簡單功能。
Jenkins X認為CI是在将請求合并到master之前通過pull請求驗證建議更改的過程。Jenkins X将自動配置源代碼存儲庫,Jenkins和Kubernetes以提供開箱即用的持續內建。
Jenkins X認為CD是在合并到主分支之後,通過在實時環境中運作來采取更改的過程。Jenkins X在釋出管道中自動化許多部分:
Jenkins X提倡使用語義版本控制。我們使用git标簽來計算下一個版本,這意味着我們不需要在主分支中存儲最新版本。
在釋出系統将最後一個版本或下一個版本存儲在Git repos中的情況下,這意味着CD變得很難,因為釋出管道中的送出傳回到master将會觸發新版本。這會導緻遞歸釋放觸發器。使用Git标簽有助于避免這種情形,這也是Jenkins X可以完全自動化實作的情況。
Jenkins X将自動在每個合并之間建立一個已釋出的版本,然後可能會進入生産階段。
通過針對Jenkins X的Kubernetes使用者,我們可以利用許多有助于設計和開發松散耦合解決方案的雲功能。這裡僅列舉Kubernetes幫助的幾個示例:服務發現、容錯、可擴充性、運作狀況檢查、滾動更新、容器排程和編排。
Jenkins X旨在幫助多語言應用程式開發人員。現在,Jenkins X擁有快速入門和自動化的CI / CD設定,可以對Golang、Java、NodeJS、.Net、React、Angular、Rust、Swift等語言進行檢測。這也是提供一緻的工作方式,是以開發人員可以專注于開發。
Jenkins X還提供了許多插件,例如Grafana和Prometheus,用于自動化名額收集和可視化。在此示例中,集中度量标準有助于了解在Kubernetes上建構和部署應用程式時的行為方式。
DevPods是另一個功能,它使開發人員能夠在其本地IDE中編輯源代碼,然後在将其同步到雲并快速建構和重新部署。
Jenkins X認為,為開發人員提供自動化幫助他們在雲中進行實驗,使用不同的技術和回報使他們能夠更快地做出最佳決策。
我自己、James Strachan 和 Rob Davies 将在 DevOps World | Jenkins World上展示和舉辦研讨會。我們也會在Jenkins X示範區閑逛,是以來打招呼,看看Jenkins X最新的酷炫和出色的東西。使用JWFOSS可以享受30%的折扣優惠
Jenkins X是開源的,社群主要在Jenkins X Kubernetes slack channels,有關更多了解Jenkins X建議,請檢視我們的參考文檔。我們一直在幫助很多人進入開源,學習新的技術和語言,如 Golang。為什麼不加入呢?
如果您還沒有明白它,那麼這個視訊會介紹,帶有自動CI / CD流水線和預覽環境的spring boot 快速入門。
https://youtu.be/kPes3rvT1UM
不過瘾,去看看Jenkins Ambassador 石雪峰老師的精彩文章:X 戰警降臨,Jenkins X 正式釋出
石雪峰老師的示範視訊
http://www.gaowei.vip/cv-213831.html 原标題:Accelerate with Jenkins X 翻譯 :緻Great 原文連結:https://jenkins.io/blog/2018/07/19/jenkins-x-accelerate/