本文首發於:Jenkins 中文社區markdown
原文連接 做者:pch-maintainersoop
譯者:Donghui Wangui
Jenkins 流水線配置歷史插件,讓流水線變動可追溯spa
流水線是在 Jenkins 中建立任務的有效的和現代的方式。 爲了快速、簡單地識別流水線變動,咱們開發了流水線配置歷史插件。 這個插件檢測流水線的變動,併爲用戶提供一個選項,以明顯地、可追溯地查看流水線配置兩次構建(差別)之間的變動。插件
這一切開始於十年以前 —— 經典的任務類型 (例如:自由風格、Maven 等等)。 每隔一段時間,用戶就會聯繫咱們,由於他們的任務沒法在一晚上之間完成。 爲何這個任務失敗了呢? 此次失敗和任務配置變動有關係嗎? 用戶典型的回答是:」咱們沒有改任何東西」,但這是真的嗎? 咱們思考了這個問題,並決定開發一個插件來幫助咱們解決這個問題。 這就是plugin:jobConfigHistory[任務配置歷史]的想法和開始。代理
如今能夠查看任務配置的變動(例如其餘分支、JDK版本等),並且更常見的狀況是,破壞構建的緣由是任務配置的變動。code
多年來,該插件獲得了開發,目前仍在開發中。 添加了新的功能,不只能夠查看任務配置,還能夠查看全局和代理配置的變動。 還能夠恢復舊的配置版本。 現在,這個插件已經有超過30,000次安裝量。 多年來,JobConfigHistory 減輕了咱們的平常工做 —— 咱們有超過3000個 Jenkins 任務! 而後出現了一種新的任務類型:流水線。orm
流水線任務和經典的任務類型有根本地區別。 經典的任務類型是經過 Jenkins GUI 配置的,而流水線任務是配置即代碼。 實際上,每一個流水線任務都是經過 Jenkins GUI 建立的,然而這並不必定是流水線配置的位置。 流水線能夠被配置:事件
對於任務配置的每次保存操做,若是發生了變動,JobConfigHistory 將建立實際任務配置的副本。 只有當流水線配置做爲腳本插入到任務配置頁面時,該方法才適用於流水線任務。 JobConfigHistory 未檢測到 Jenkinsfile 或共享庫中的變動。 您必須使用 SCM 系統查看 Jenkinsfile 或共享庫的變動。 在構建時間和對 Jenkinsfile 或共享庫的變動之間找到相關性是複雜且耗時的。ip
這個新問題不只僅是 JobConfigHistory。 須要一個新的解決方案來檢測流水線變動並顯示 Jenkins 中的這些變動。 因此咱們開發了流水線配置歷史插件。
在每一個流水線運行期間,Jenkinsfile 和相關的共享庫都保存在任務的構建
目錄中。 流水線配置歷史插件將最近運行和前一次運行之間流水線文件的變動保存爲歷史事件。 所以,當流水線任務以成功的構建結束時,您能夠檢查任何使用的流水線文件是否發生了變動。 您還能夠看到發生變動的構建。
由於流水線配置能夠由可能發生變動的多個文件組成,因此 diff 中只顯示兩個構建版本之間發生變動的文件。 這使得整個過程更加緊湊和有效:
但有時您可能想要顯示的不只僅是流水線文件之間的差別。 您可能但願查看哪些流水線文件正在使用,或者這些文件在使用時的內容。 所以能夠查看全部文件及其內容。 若是須要,您也能夠下載:
咱們在生產中成功地使用了流水線配置歷史插件。 它從第一天起就幫助咱們解決了因爲流水線配置變動而出現的問題。 流水線配置歷史插件不會替換任務配置歷史插件。 插件有不一樣的用例。 不少時候,任務或流水線配置上的小變動也會產生很大的影響。 因爲任務或流水線配置的變動與不一樣的構建行爲之間的時間相關性,如今能夠大大減小分析構建失敗的時間和精力。 任務配置歷史和流水線配置歷史插件容許咱們在諮詢和解決問題方面爲用戶提供幫助。經過訪問任務的配置歷史,咱們能夠更快地解決問題。這些插件對咱們的平常工做是必不可少的。