開源版本的Jenkins 具有三大能力:Master-Slave的分佈式構建調度能力、Pipeline編排能力、強大的開源生態(插件)能力。
2017年4月,Jenkins創始人KK(Kohsuke Kawaguchi )來到中國,交流中他也明確表示Jenkins的成功主要取決於其開源生態系統,Jenkins有1400多個插件可供使用。因爲有開源的插件生態系統的存在,Jenkins要用得好,插件一定是不能少的,需要我們充分發現和使用插件來實現我們的需求,而不是重複造輪子,自己去實現。
但是面對林林總總的插件,到底該怎麼選?我的常用需求有哪些插件可以滿足,筆者根據以往在企業中管理Jenkins的經驗推薦如下常用的插件列表,希望大家基於Jenkins及其插件生態實現自己的持續交付與DevOps平臺。
用戶及權限
Jenkins 用戶權限管理是Jenkins Administration中非常很重要的環節,由於大部分企業都會有自己的域控管理,所以和LDAP集成並基於用戶組實現權限模型設計與管理是企業級Jenkins實踐的重要內容。
- l LDAP (https://plugins.jenkins.io/ldap),這個插件允許使用LDAP對用戶進行認證,LDAP 服務器可以爲Active Directory 或者 OpenLDAP。
- l Active Directory https://plugins.jenkins.io/active-directory,這個插件允許使用Active Directory對用戶進行認證,同時結合諸如Matrix Authorization Strategy插件,可以識別用戶所在的所有用戶組,對用戶授權進行靈活配置。
- l 基於Windows Active Directory進行域管理的企業,推薦採用Active Directory。
- l GitHub Authentication https://plugins.jenkins.io/github-oauth,這個插件提供了使用GitHub進行用戶認證和授權的方案。
- l Gitlab Authentication https://plugins.jenkins.io/gitlab-oauth,這個插件提供了使用GitLab進行用戶認證和授權的方案。
- l Matrix Authorization Strategy https://plugins.jenkins.io/matrix-auth,這個插件提供了基於矩陣的授權策略,支持全局和項目級別的配置。
- l Role-based Authorization Strategy https://plugins.jenkins.io/role-strategy,這個插件提供了一種基於角色(Role)的用戶權限管理策略,支持創建global角色、Project角色、Slave角色,以及給用戶分配這些角色。這款插件是最常用的Jenkins權限策略和管理插件。
代碼管理
Jenkins 項目中配置Source Code Management 去下載代碼進行構建任務,是非常普遍的應用場景。Jenkins插件支持很多SCM的系統,使用最常見的是Git 和SVN。
- l Git https://plugins.jenkins.io/git,支持使用Github、GitLab、Gerrit等系統管理代碼倉庫。
- l Subversion https://plugins.jenkins.io/subversion,支持Subversion系統管理源代碼。
項目及視圖
Jenkins中對Project 和 view的管理,是用戶日常工作中使用很多的功能。
- l Folder https://plugins.jenkins.io/cloudbees-folder,這個插件支持用戶使用目錄管理項目,目錄支持嵌套,並且支持目錄中創建視圖。
- l List view Jenkins 默認支持List類型的視圖,用戶可以創建List視圖過濾所關心的項目。
- l Sectioned View https://plugins.jenkins.io/sectioned-view,這個插件支持一種新的視圖,視圖可以分爲多個部分,每部分可以單獨配置顯示所選擇的項目信息。
- l Nested View https://plugins.jenkins.io/nested-view,這個插件支持一種新的視圖,其表示直接顯示項目,而是以目錄圖標顯示所包含的子視圖,每個子視圖顯示所選項目信息。
- l Build Pipeline https://plugins.jenkins.io/build-pipeline-plugin,這個插件提供了一種Build Pipeline 視圖,用於顯示上、下游項目構建的關係。
構建觸發
Jenkins支持多種Build 觸發方式,尤其一些自動化觸發方式非常有用
- l Build periodically,Jenkins 內置功能,可以設置類似crontab時間,週期性地自動觸發構建。
- l Poll SCM,Jenkins 內置功能,類似Build periodically,可以設置類似crontab時間,不同的是不是直接進行構建,而是週期性地在後臺檢查所配置的SCM有沒有更新,只有當有代碼更新時纔會觸發構建。
- l Trigger builds remotely (e.g., from scripts),Jenkins 內置功能,遠程觸發構建,通過設置token可以支持遠程腳本中觸發Jenkins構建。
- l Gerrit Trigger https://plugins.jenkins.io/gerrit-trigger,這個插件將Jenkins集成到Gerrit code review中,支持Jenkins配置Gerrit服務器等信息,實現Gerrit event 觸發Jenkins 構建。
- l GitLab https://plugins.jenkins.io/gitlab-plugin, 這個插件將Jenkins 集成到GitLab web hook中,支持Gitlab 分支及Merge Request等相關事件觸發Jenkins構建。
- l GitHub Integration https://plugins.jenkins.io/github-pullrequest ,這個插件將Jenkins集成到GitHub中,支持Gitgub分支及Pull requests 觸發Jenkins 構建。
- l JIRA Trigger https://plugins.jenkins.io/jira-trigger,這個插件將Jenkins集成到Jira WebHooks中,支持Jira issue的狀態等變化時觸發Jenkins構建。
構建參數
Jenkins除了支持普通的參數類型(布爾型、字符串型、多行文本型、選擇型和文件型 )外,還有一些插件支持更加豐富實用的參數類型,比如參數間動態關聯、多層級參數、隱藏參數等 。
- l nodelabelparameter https://plugins.jenkins.io/nodelabelparameter,這個插件增加了一個新的參數類型,Node 和 Label,從而使用戶通過參數可以選擇項目構建運行的節點。
- l 其他插件不一一列舉,可以查看插件說明
Ø https://plugins.jenkins.io/hidden-parameter
Ø https://plugins.jenkins.io/extended-choice-parameter
Ø https://plugins.jenkins.io/validating-string-parameter
Ø https://plugins.jenkins.io/extensible-choice-parameter
Ø https://wiki.jenkins.io/display/JENKINS/Active+Choices+Plugin
構建任務及環境
圍繞構建任務,有許多小的插件,卻提供了一些實用的功能
- l Workspace Cleanup https://plugins.jenkins.io/ws-cleanup,這個插件支持在構建前後 刪除或者部分刪除workspace
- l description setter https://plugins.jenkins.io/description-setter,這個插件支持正則表達式匹配構建log輸出,設置構建的描述
- l build-name-setter https://plugins.jenkins.io/build-name-setter,這個插件支持設置構建的顯示名字,而不是默認的爲#1,#2,……,#buildnum
- l Environment Injector https://plugins.jenkins.io/envinject,這個插件支持在構建任務的不同階段插入環境變量,並且在構建結束導出所有的環境變量等功能。
構建通知
把構建狀態及時地通知用戶,是Jenkins的一個必不可少的功能。Jenkins支持多種主動和被動的通知方式。
- l Mailer https://plugins.jenkins.io/mailer,這個插件支持基本的郵件通知功能,比如構建失敗和構建恢復成功可以發送郵件通知給相關人員。
- l Email Extension https://plugins.jenkins.io/email-ext,這個插件是郵件通知的擴展,支持定製郵件內容,觸發條件以及郵件接收者,功能比基本郵件通知要靈活強大的多。
- l Slack Notification https://plugins.jenkins.io/slack,這個插件支持把構建結果推送到Slack channel。
容器化Slave
Jenkins的Master-Slave架構實現了分佈式構建,可以充分的橫向擴展Slave來提升構建能力,將Slave容器化是目前主流的構建環境標準化、集羣化和彈性化的方式。
- l https://plugins.jenkins.io/docker-plugin,這個插件可以配置docker host ,從而動態的提供Jenkins Agent(Slave),運行構建後再銷燬這個slave。
- l https://plugins.jenkins.io/kubernetes, 這個插件支持利用Kubernetes cluster 動態的提供Jenkins Agent(Slave),利用Kubernetes 調度機制來優化Jenkins 負載等。
Admin相關插件
- l Configuration Slicing https://plugins.jenkins.io/configurationslicing,這個插件支持批量修改項目配置
- l Mask Passwords https://plugins.jenkins.io/mask-passwords,這個插件支持遮擋構建log輸出的password等敏感信息
- l Backup https://plugins.jenkins.io/backup,這個插件添加備份功能到Jenkins management
jenkins常用插件彙總:
Build-timeout Plugin:任務構建超時插件
Naginator Plugin:任務重試插件
Build User Vars Plugin:用戶變量獲取插件
Build Pipeline Plugin View :Pipeline 管道流圖表展示插件
Build Flow Plugin:工作流插件,支持DSL腳本定義工作流
Build Graph View Plugin:build Flow插件視圖(安裝後需要重新才能生效)
Multijob Plugin:多任務插件
Build-timeout Plugin:job構建超時插件
Build Timestamp Plugin :任務log時間戳插件,使得job log的每次輸出前面都增加當時的時間
Parameterized Trigger Plugin:這是一個擴展型的插件,使各個job連接的時候可以傳遞一些job相關的信息
Join Plugin:這也是一個觸發job的插件,亮點在於它觸發job的條件是等待所有當前job的下游的job都完成纔會發生。
Files Found Trigger:檢測指定的目錄,如果發現指定模式的文件則啓動build。
BuildResultTrigger Plugin:根據其他的job的成功或失敗來啓動此build。
Publish Over SSH Plugin:通過ssh發佈文件
Rebuild Plugin:重新執行插件
ws-cleanup Plugin :workspace清理插件
Cron Column Plugin: 通過定時任務例行的運行一些job
Job Configuration History Plugin:使用心得:使job具備版本管理的能力,diff和rollback功能更是非常贊
HTTP Request Plugin:使用心得:在構建前後可以通過該插件以http形式調用各種api接口實現和內部系統的聯動
Periodic Backup:使用心得:備份是運維一個系統必須要保障的事情,該插件的恢復功能可能不可用,需要手工進行,好處在於可以定時備份
Job Import Plugin:使用心得:可以快速導入其他jenkins集羣的已有job,需要認證的jenkins系統導入需要提供憑證纔可以
Status Monitor Plugin:構建狀態插件
Build Monitor View :使用心得:基於該插件可以實現dashboard功能
Build Environment Plugin:構建環境插件,可以進行構建環境比較。
FTP插件:
Monitoring:Monitoring of Jenkins
基礎依賴插件:
jQuery Plugin:jQuery插件