這篇文章將介紹我在 jenkins 上遇到的一些常見問題,以及如何通過開發通用 webhook 觸發外掛程式來解決這些問題。在使用 jenkins 工作時,我經常遇到同樣的問題:每個 git 倉庫中都有 jenkinsfiles,使開發人員可以使這些檔案分開。開發人員 push 他們的專案,並且很難維護共享**的模式。我幾乎用共享庫解決了**重複問題,但是它不允許我設定必須遵循的嚴格模式。任何開發人員仍然可以決定不呼叫共享庫提供的功能。還允許開發人員執行 jenkinsfiles 中的任何**的安全性方面。例如,開發人員可能會列印從憑據收集的密碼。讓開發人員在 jenkins 節點上執行任何**對我來說似乎不合適。在 bitbucket 中有專案,每個專案都有 git 倉庫的集合。像這樣:
proj_2
讓我們考慮一下我們要為這些倉庫提供的一些功能:
如果開發人員習慣於在 bitbucket 中像這樣組織倉庫,我們是否應該在 jenkins 中以同樣的方式組織它們?而且,如果他們瀏覽 jenkins,是否不應該為每種功能(例如pull-request
,snapshot
和
…
在此示例中,snapshot
和release
任務都可以在同一 git 分支上工作。不同之處在於它們提供的功能。它們的引數可以很好地記錄下來,因為您不必混合與發行版和快照相關的引數。使用多分支流水線外掛程式無法做到這一點,在多分支流水線外掛程式中,您將引數指定為每個分支的properties
。webhooks 通常在提供它們的服務中有據可查。例如:
令我困擾的是,即使我理解了這些 webhooks,我也無法使用它們。因為我需要在所使用的外掛程式中進行開發,以便提供從 webhook 到構建的任何值。從 pr 到實際發布,該過程可能需要幾個月的時間。這樣簡單的事情實際上應該不是問題。我的解決方案幾乎可以追溯到基本知識:我們有乙個自動化服務(jenkins),我們想在外部 webhooks 上觸發它。我們想從該 webhook 收集資訊並將其提供給我們的構建。為了支援它,我建立了通用 webhook 觸發器外掛程式。倉庫中提供了最新文件,並且有乙個完整的示例,其中使用configuration-as-code
實現了 gitlab。在這裡檢視倉庫。我制定了所有開發人員都必須遵循的約定。而不是讓開發人員從 jenkinsfiles 顯式呼叫基礎結構。遵循一些規則,例如:
如果包含package.json
有了這些規則,流水線就可以完全通用,並且在倉庫中不需要 jenkinsfiles。由於某些原因,某些 git 倉庫可能需要禁用測試用例。這可以通過允許倉庫新增乙個特殊檔案,也就是jenkins-settings.json
來解決,讓基礎架構發現其內容並對其採取行動。即使沒有執行 ci,這也可以幫助開發人員。當他們轉殖乙個新的,未知的倉庫時,他們將知道可以發出哪些命令及其語義。我實現:
通過與 job dsl 中的 git 服務整合,我可以自動找到 git 倉庫。我建立動態組織在資料夾中的任務。還呼叫 git 服務來設定觸發這些任務的 webhooks。任務是普通的流水線,不是多分支,它們不使用 git 中的 jenkinsfile,而是使用 job dsl 在任務中配置的 jenksinfile。因此,所有任務配置和流水線均受版本控制。這一切都在這裡發生。該外掛程式使用jsonpath
以及xpath
從 json 提取值並將其提供給構建。讓使用者從 webhook 中選擇所需的內容。它還具有乙個正規表示式過濾器,以允許在某些情況下不觸發。該外掛程式不是很大,只是 webhook、jsonpath/xpath
和正規表示式之間的粘合劑。所有這些部分都已被很好地記錄下來,我會盡力維護該外掛程式。這是乙個非常有據可查的解決方案!
推薦閱讀
jenkins cli,助你輕鬆管理 jenkins
jenkins x 新 logo
介紹新的 gitlab 分支源外掛程式
jenkins 線上技術交流
jenkins cli 命令列 v0.0.22
譯者:張文君
儲存設定 設定 CATIA自動儲存設定
問題 在使用catia設計時,大約每隔半小時就會遇到一次 卡死 特別是設計任務較為複雜時,卡死 的時間會較長,此時我們只好暫停設計工作,等待恢復 多數情況下 這是catia在自動儲存時的 卡滯 而不是真正的 卡死 目的就是防止沒有主動儲存習慣的小夥伴,遇見 意外情況 真正 卡死 後,重啟catia還...
pycharm 常用設定設定
1.自動加冒號 換行 complete current statement ctrl shift enter 與虛擬機器衝突 修改為 ctrl shift 2.儲存成模板 ctrl shift l live template 3.設定 pycharm 注釋字型顏色 setting font lang...
linux centos ip設定網絡卡設定
1 自動獲取ip位址 虛擬機器使用橋接模式,相當於連線到物理機的網路裡,物理機網路有dhcp伺服器自動分配ip位址。dhclient 自動獲取ip位址命令 ifconfig 查詢系統裡網絡卡資訊,ip位址 mac位址 分配到ip位址後,用物理機進行ping ip位址,檢測是否ping通。2 手動設定...