[Up]常用資訊

[重點文章] 重點文章 [重點文章] 重點文章

2020年4月14日 星期二

[Jenkins] 套件分享

[Jenkins] 套件分享

前言

開源版本的 Jenkins 具有三大能力:Master-Slave 的分散式構建調度能力、Pipeline 編排能力、強大的開源生態(外掛程式)能力。2017 年 4 月,Jenkins 創始人 KK(Kohsuke Kawaguchi )來到中國,交流中他也明確表示 Jenkins 的成功主要取決於其開源生態系統,Jenkins 有 1400 多個外掛程式可供使用。因為有開源的外掛程式生態系統的存在,Jenkins 要用得好,外掛程式一定是不能少的,需要我們充分發現和使用外掛程式來實現我們的需求,而不是重複造輪子,自己去實現。

Jenkins Plugins 常用外掛程式推薦

更新

Jenkins Plugins Index


用戶及許可權

Jenkins 用戶許可權管理是 Jenkins Administration 中非常很重要的環節,由於大部分企業都會有自己的域控管理,所以和 LDAP 集成並基於使用者組實現許可權模型設計與管理是企業級 Jenkins 實踐的重要內容。

  1. LDAP 這個外掛程式允許使用 LDAP 對用戶進行認證,LDAP 伺服器可以為 Active Directory 或者 OpenLDAP。
  2. Active Directory 這個外掛程式允許使用 Active Directory 對用戶進行認證,同時結合諸如 Matrix Authorization Strategy 外掛程式,可以識別用戶所在的所有用戶組,對使用者授權進行靈活配置。
    基於 Windows Active Directory 進行域管理的企業,推薦採用 Active Directory。
  3. GitHub Authentication 這個外掛程式提供了使用 GitHub 進行用戶認證和授權的方案。
  4. Gitlab Authentication 這個外掛程式提供了使用 GitLab 進行用戶認證和授權的方案。
  5. Matrix Authorization Strategy 這個外掛程式提供了基於矩陣的授權策略,支援全域和專案級別的配置。
  6. Role-based Authorization Strategy 這個外掛程式提供了一種基於角色(Role)的用戶許可權管理策略,支援創建 global 角色、Project 角色、Slave 角色,以及給用戶分配這些角色。這款外掛程式是最常用的 Jenkins 許可權策略和管理外掛程式。

Jenkins 自動化部署 - 許可權管控篇 (六)

代碼管理

Jenkins 專案中配置 Source Code Management 去下載代碼進行構建任務,是非常普遍的應用場景。Jenkins 外掛程式支援很多 SCM 的系統,使用最常見的是 Git 和 SVN。

  1. Git 支援使用 Github、GitLab、Gerrit 等系統管理代碼倉庫。
  2. Subversion 支援 Subversion 系統管理原始程式碼。

項目及視圖

Jenkins 中對 Project 和 view 的管理,是用戶日常工作中使用很多的功能。

  1. Folder 這個外掛程式支援使用者使用目錄管理專案,目錄支援嵌套,並且支援目錄中創建視圖。
  2. List view Jenkins 默認支持 List 類型的視圖,用戶可以創建 List 視圖過濾所關心的項目。
  3. Sectioned View 這個外掛程式支援一種新的視圖,視圖可以分為多個部分,每部分可以單獨配置顯示所選擇的專案資訊。
  4. Nested View 這個外掛程式支援一種新的視圖,其表示直接顯示專案,而是以目錄圖示顯示所包含的子視圖,每個子視圖顯示所選專案資訊。
  5. Build Pipeline 這個外掛程式提供了一種 Build Pipeline 視圖,用於顯示上、下游專案構建的關係。

構建觸發

Jenkins 支援多種 Build 觸發方式,尤其一些自動化觸發方式非常有用

  1. Build periodically,Jenkins 內置功能,可以設置類似 crontab 時間,週期性地自動觸發構建。Poll SCM,Jenkins 內置功能,類似 Build periodically,可以設置類似 crontab 時間,不同的是不是直接進行構建,而是週期性地在後臺檢查所配置的 SCM 有沒有更新,只有當有代碼更新時才會觸發構建。
  2. Trigger builds remotely (e.g., from scripts),Jenkins 內置功能,遠端觸發構建,通過設置 token 可以支持遠端腳本中觸發 Jenkins 構建。
  3. Gerrit Trigger 這個外掛程式將 Jenkins 集成到 Gerrit code review 中,支援 Jenkins 配置 Gerrit 伺服器等資訊,實現 Gerrit event 觸發 Jenkins 構建。
  4. GitLab 這個外掛程式將 Jenkins 集成到 GitLab web hook 中,支援 Gitlab 分支及 Merge Request 等相關事件觸發 Jenkins 構建。
  5. GitHub Integration 這個外掛程式將 Jenkins 集成到 GitHub 中,支援 Gitgub 分支及 Pull requests 觸發 Jenkins 構建。
  6. JIRA Trigger 這個外掛程式將 Jenkins 集成到 Jira WebHooks 中,支援 Jira issue 的狀態等變化時觸發 Jenkins 構建。

構建參數

Jenkins 除了支持普通的參數類型(布林型、字串型、多行文本型、選擇型和檔型 )外,還有一些外掛程式支持更加豐富實用的參數類型,比如參數間動態關聯、多層級參數、隱藏參數等 。

  1. nodelabelparameter 這個外掛程式增加了一個新的參數類型,Node 和 Label,從而使用戶通過參數可以選擇項目構建運行的節點。
    其他外掛程式不一一列舉,可以查看外掛程式說明

構建任務及環境

圍繞構建任務,有許多小的外掛程式,卻提供了一些實用的功能

  1. Workspace Cleanup 這個外掛程式支援在構建前後 刪除或者部分刪除 workspace
  2. description setter 這個外掛程式支持規則運算式匹配構建 log 輸出,設置構建的描述
  3. build-name-setter 這個外掛程式支援設置構建的顯示名字,而不是預設的為 #1,#2,……,#buildnum
  4. Environment Injector 這個外掛程式支持在構建任務的不同階段插入環境變數,並且在構建結束匯出所有的環境變數等功能。

構建通知

把構建狀態及時地通知使用者,是 Jenkins 的一個必不可少的功能。Jenkins 支援多種主動和被動的通知方式。

  1. Mailer 這個外掛程式支持基本的郵件通知功能,比如構建失敗和構建恢復成功可以發送郵件通知給相關人員。
  2. Email Extension 這個外掛程式是郵件通知的擴展,支援定制郵件內容,觸發條件以及郵件接收者,功能比基本郵件通知要靈活強大的多。
  3. Slack Notification 這個外掛程式支持把構建結果推送到 Slack channel。

容器化 Slave

Jenkins 的 Master-Slave 架構實現了分散式構建,可以充分的橫向擴展 Slave 來提升構建能力,將 Slave 容器化是目前主流的構建環境標準化、集群化和彈性化的方式。

  1. https://plugins.jenkins.io/docker-plugin 這個外掛程式可以配置 docker host ,從而動態的提供 Jenkins Agent(Slave),運行構建後再銷毀這個 slave。
  2. https://plugins.jenkins.io/kubernetes 這個外掛程式支援利用 Kubernetes cluster 動態的提供 Jenkins Agent(Slave),利用 Kubernetes 調度機制來優化 Jenkins 負載等。

Admin 相關外掛程式

  1. Configuration Slicing https://plugins.jenkins.io/configurationslicing 這個外掛程式支援批量修改專案配置
  2. Mask Passwords https://plugins.jenkins.io/mask-passwords 這個外掛程式支持遮擋構建 log 輸出的 password 等敏感資訊
  3. 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

參考文章

 

 

沒有留言:

張貼留言