[Jenkins] 套件分享
Jenkins Plugins 常用外掛程式推薦
前言
開源版本的 Jenkins 具有三大能力:Master-Slave 的分散式構建調度能力、Pipeline 編排能力、強大的開源生態(外掛程式)能力。2017 年 4 月,Jenkins 創始人 KK(Kohsuke Kawaguchi )來到中國,交流中他也明確表示 Jenkins 的成功主要取決於其開源生態系統,Jenkins 有 1400 多個外掛程式可供使用。因為有開源的外掛程式生態系統的存在,Jenkins 要用得好,外掛程式一定是不能少的,需要我們充分發現和使用外掛程式來實現我們的需求,而不是重複造輪子,自己去實現。
Jenkins Plugins 常用外掛程式推薦
更新
用戶及許可權
Jenkins 用戶許可權管理是 Jenkins Administration 中非常很重要的環節,由於大部分企業都會有自己的域控管理,所以和 LDAP 集成並基於使用者組實現許可權模型設計與管理是企業級 Jenkins 實踐的重要內容。
- LDAP 這個外掛程式允許使用 LDAP 對用戶進行認證,LDAP 伺服器可以為 Active Directory 或者 OpenLDAP。
-
Active Directory 這個外掛程式允許使用 Active Directory 對用戶進行認證,同時結合諸如 Matrix Authorization Strategy 外掛程式,可以識別用戶所在的所有用戶組,對使用者授權進行靈活配置。
基於 Windows Active Directory 進行域管理的企業,推薦採用 Active Directory。 - GitHub Authentication 這個外掛程式提供了使用 GitHub 進行用戶認證和授權的方案。
- Gitlab Authentication 這個外掛程式提供了使用 GitLab 進行用戶認證和授權的方案。
- Matrix Authorization Strategy 這個外掛程式提供了基於矩陣的授權策略,支援全域和專案級別的配置。
- Role-based Authorization Strategy 這個外掛程式提供了一種基於角色(Role)的用戶許可權管理策略,支援創建 global 角色、Project 角色、Slave 角色,以及給用戶分配這些角色。這款外掛程式是最常用的 Jenkins 許可權策略和管理外掛程式。
代碼管理
Jenkins 專案中配置 Source Code Management 去下載代碼進行構建任務,是非常普遍的應用場景。Jenkins 外掛程式支援很多 SCM 的系統,使用最常見的是 Git 和 SVN。
- Git 支援使用 Github、GitLab、Gerrit 等系統管理代碼倉庫。
- Subversion 支援 Subversion 系統管理原始程式碼。
項目及視圖
Jenkins 中對 Project 和 view 的管理,是用戶日常工作中使用很多的功能。
- Folder 這個外掛程式支援使用者使用目錄管理專案,目錄支援嵌套,並且支援目錄中創建視圖。
- List view Jenkins 默認支持 List 類型的視圖,用戶可以創建 List 視圖過濾所關心的項目。
- Sectioned View 這個外掛程式支援一種新的視圖,視圖可以分為多個部分,每部分可以單獨配置顯示所選擇的專案資訊。
- Nested View 這個外掛程式支援一種新的視圖,其表示直接顯示專案,而是以目錄圖示顯示所包含的子視圖,每個子視圖顯示所選專案資訊。
- Build Pipeline 這個外掛程式提供了一種 Build Pipeline 視圖,用於顯示上、下游專案構建的關係。
構建觸發
Jenkins 支援多種 Build 觸發方式,尤其一些自動化觸發方式非常有用
- Build periodically,Jenkins 內置功能,可以設置類似 crontab 時間,週期性地自動觸發構建。Poll SCM,Jenkins 內置功能,類似 Build periodically,可以設置類似 crontab 時間,不同的是不是直接進行構建,而是週期性地在後臺檢查所配置的 SCM 有沒有更新,只有當有代碼更新時才會觸發構建。
- Trigger builds remotely (e.g., from scripts),Jenkins 內置功能,遠端觸發構建,通過設置 token 可以支持遠端腳本中觸發 Jenkins 構建。
- Gerrit Trigger 這個外掛程式將 Jenkins 集成到 Gerrit code review 中,支援 Jenkins 配置 Gerrit 伺服器等資訊,實現 Gerrit event 觸發 Jenkins 構建。
- GitLab 這個外掛程式將 Jenkins 集成到 GitLab web hook 中,支援 Gitlab 分支及 Merge Request 等相關事件觸發 Jenkins 構建。
- GitHub Integration 這個外掛程式將 Jenkins 集成到 GitHub 中,支援 Gitgub 分支及 Pull requests 觸發 Jenkins 構建。
- JIRA Trigger 這個外掛程式將 Jenkins 集成到 Jira WebHooks 中,支援 Jira issue 的狀態等變化時觸發 Jenkins 構建。
構建參數
Jenkins 除了支持普通的參數類型(布林型、字串型、多行文本型、選擇型和檔型 )外,還有一些外掛程式支持更加豐富實用的參數類型,比如參數間動態關聯、多層級參數、隱藏參數等 。
-
nodelabelparameter 這個外掛程式增加了一個新的參數類型,Node 和 Label,從而使用戶通過參數可以選擇項目構建運行的節點。
其他外掛程式不一一列舉,可以查看外掛程式說明
構建任務及環境
圍繞構建任務,有許多小的外掛程式,卻提供了一些實用的功能
- Workspace Cleanup 這個外掛程式支援在構建前後 刪除或者部分刪除 workspace
- description setter 這個外掛程式支持規則運算式匹配構建 log 輸出,設置構建的描述
- build-name-setter 這個外掛程式支援設置構建的顯示名字,而不是預設的為 #1,#2,……,#buildnum
- Environment Injector 這個外掛程式支持在構建任務的不同階段插入環境變數,並且在構建結束匯出所有的環境變數等功能。
構建通知
把構建狀態及時地通知使用者,是 Jenkins 的一個必不可少的功能。Jenkins 支援多種主動和被動的通知方式。
- Mailer 這個外掛程式支持基本的郵件通知功能,比如構建失敗和構建恢復成功可以發送郵件通知給相關人員。
- Email Extension 這個外掛程式是郵件通知的擴展,支援定制郵件內容,觸發條件以及郵件接收者,功能比基本郵件通知要靈活強大的多。
- Slack Notification 這個外掛程式支持把構建結果推送到 Slack channel。
容器化 Slave
Jenkins 的 Master-Slave 架構實現了分散式構建,可以充分的橫向擴展 Slave 來提升構建能力,將 Slave 容器化是目前主流的構建環境標準化、集群化和彈性化的方式。
- https://plugins.jenkins.io/docker-plugin 這個外掛程式可以配置 docker host ,從而動態的提供 Jenkins Agent(Slave),運行構建後再銷毀這個 slave。
- https://plugins.jenkins.io/kubernetes 這個外掛程式支援利用 Kubernetes cluster 動態的提供 Jenkins Agent(Slave),利用 Kubernetes 調度機制來優化 Jenkins 負載等。
Admin 相關外掛程式
- Configuration Slicing https://plugins.jenkins.io/configurationslicing 這個外掛程式支援批量修改專案配置
- Mask Passwords https://plugins.jenkins.io/mask-passwords 這個外掛程式支持遮擋構建 log 輸出的 password 等敏感資訊
- Backup https://plugins.jenkins.io/backup 這個外掛程式添加備份功能到 Jenkins management
個人推薦的通用外掛程式
Name | Link |
---|---|
Google Login Plugin | https://plugins.jenkins.io/google-login |
Role-based Authorization Strategy | https://plugins.jenkins.io/role-strategy |
Periodic Backup | https://plugins.jenkins.io/periodicbackup |
Notification | https://plugins.jenkins.io/notification |
Git Parameter | https://plugins.jenkins.io/git-parameter |
AnsiColor | https://plugins.jenkins.io/ansicolor |
SSH Agent | https://plugins.jenkins.io/git-parameter |
Build Name and Description Setter | https://plugins.jenkins.io/build-name-setter |
Publish Over SSH | https://plugins.jenkins.io/publish-over-ssh |
user build vars | https://plugins.jenkins.io/build-user-vars-plugin |
Throttle Concurrent Builds | https://plugins.jenkins.io/throttle-concurrents |
Active Choices | https://plugins.jenkins.io/uno-choice |
Rebuilder | https://plugins.jenkins.io/rebuild |
參考文章
沒有留言:
張貼留言