930
技術社區[雲棲]
Jenkins 應用三十六計-插件信息[轉載]
Jenkins 三十六計
第一計:Jenkins用得好,插件不能少。
案例一 企業級Jenkins之插件推薦列表[w1]
【相關計策:第一計】
開源版本的Jenkins 具有三大能力:Master-Slave的分布式構建調度能力、Pipeline編排能力、強大的開源生態(插件)能力。
2017年4月,Jenkins創始人KK(Kohsuke Kawaguchi )來到中國,交流中他也明確表示Jenkins的成功主要取決於其開源生態係統,Jenkins有1400多個插件可供使用。因為有開源的插件生態係統的存在,Jenkins要用得好,插件一定是不能少的,需要我們充分發現和使用插件來實現我們的需求,而不是重複造輪子,自己去實現。
但是麵對林林總總的插件,到底該怎麼選?我的常用需求有哪些插件可以滿足,筆者根據以往在企業中管理Jenkins的經驗推薦如下常用的插件列表,希望大家基於Jenkins及其插件生態實現自己的持續交付與DevOps平台。
用戶及權限
Jenkins 用戶權限管理是Jenkins Administration中非常很重要的環節,由於大部分企業都會有自己的域控管理,所以和LDAP集成並基於用戶組實現權限模型設計與管理是企業級Jenkins實踐的重要內容。
LDAP (https://plugins.jenkins.io/ldap),這個插件允許使用LDAP對用戶進行認證,LDAP 服務器可以為Active Directory 或者 OpenLDAP。
Active Directory https://plugins.jenkins.io/active-directory,這個插件允許使用Active Directory對用戶進行認證,同時結合諸如Matrix Authorization Strategy插件,可以識別用戶所在的所有用戶組,對用戶授權進行靈活配置。
基於Windows Active Directory進行域管理的企業,推薦采用Active Directory。
GitHub Authentication https://plugins.jenkins.io/github-oauth,這個插件提供了使用GitHub進行用戶認證和授權的方案。
Gitlab Authentication https://plugins.jenkins.io/gitlab-oauth,這個插件提供了使用GitLab進行用戶認證和授權的方案。
Matrix Authorization Strategy https://plugins.jenkins.io/matrix-auth,這個插件提供了基於矩陣的授權策略,支持全局和項目級別的配置。
Role-based Authorization Strategy https://plugins.jenkins.io/role-strategy,這個插件提供了一種基於角色(Role)的用戶權限管理策略,支持創建global角色、Project角色、Slave角色,以及給用戶分配這些角色。這款插件是最常用的Jenkins權限策略和管理插件。
代碼管理
Jenkins 項目中配置Source Code Management 去下載代碼進行構建任務,是非常普遍的應用場景。Jenkins插件支持很多SCM的係統,使用最常見的是Git 和SVN。
Git https://plugins.jenkins.io/git,支持使用Github、GitLab、Gerrit等係統管理代碼倉庫。
Subversion https://plugins.jenkins.io/subversion,支持Subversion係統管理源代碼。
項目及視圖
Jenkins中對Project 和 view的管理,是用戶日常工作中使用很多的功能。
Folder https://plugins.jenkins.io/cloudbees-folder,這個插件支持用戶使用目錄管理項目,目錄支持嵌套,並且支持目錄中創建視圖。
List view Jenkins 默認支持List類型的視圖,用戶可以創建List視圖過濾所關心的項目。
Sectioned View https://plugins.jenkins.io/sectioned-view,這個插件支持一種新的視圖,視圖可以分為多個部分,每部分可以單獨配置顯示所選擇的項目信息。
Nested View https://plugins.jenkins.io/nested-view,這個插件支持一種新的視圖,其表示直接顯示項目,而是以目錄圖標顯示所包含的子視圖,每個子視圖顯示所選項目信息。
Build Pipeline https://plugins.jenkins.io/build-pipeline-plugin,這個插件提供了一種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 https://plugins.jenkins.io/gerrit-trigger,這個插件將Jenkins集成到Gerrit code review中,支持Jenkins配置Gerrit服務器等信息,實現Gerrit event 觸發Jenkins 構建。
GitLab https://plugins.jenkins.io/gitlab-plugin, 這個插件將Jenkins 集成到GitLab web hook中,支持Gitlab 分支及Merge Request等相關事件觸發Jenkins構建。
GitHub Integration https://plugins.jenkins.io/github-pullrequest ,這個插件將Jenkins集成到GitHub中,支持Gitgub分支及Pull requests 觸發Jenkins 構建。
JIRA Trigger https://plugins.jenkins.io/jira-trigger,這個插件將Jenkins集成到Jira WebHooks中,支持Jira issue的狀態等變化時觸發Jenkins構建。
構建參數
Jenkins除了支持普通的參數類型(布爾型、字符串型、多行文本型、選擇型和文件型[w1] )外,還有一些插件支持更加豐富實用的參數類型,比如參數間動態關聯、多層級參數、隱藏參數等 。
nodelabelparameter https://plugins.jenkins.io/nodelabelparameter,這個插件增加了一個新的參數類型,Node 和 Label,從而使用戶通過參數可以選擇項目構建運行的節點。
-
其他插件不一一列舉,可以查看插件說明
Ø 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
構建任務及環境
圍繞構建任務,有許多小的插件,卻提供了一些實用的功能
Workspace Cleanup https://plugins.jenkins.io/ws-cleanup,這個插件支持在構建前後 刪除或者部分刪除workspace
description setter https://plugins.jenkins.io/description-setter,這個插件支持正則表達式匹配構建log輸出,設置構建的描述
build-name-setter https://plugins.jenkins.io/build-name-setter,這個插件支持設置構建的顯示名字,而不是默認的為#1,#2,……,#buildnum
Environment Injector https://plugins.jenkins.io/envinject,這個插件支持在構建任務的不同階段插入環境變量,並且在構建結束導出所有的環境變量等功能。
構建通知
把構建狀態及時地通知用戶,是Jenkins的一個必不可少的功能。Jenkins支持多種主動和被動的通知方式。
Mailer https://plugins.jenkins.io/mailer,這個插件支持基本的郵件通知功能,比如構建失敗和構建恢複成功可以發送郵件通知給相關人員。
Email Extension https://plugins.jenkins.io/email-ext,這個插件是郵件通知的擴展,支持定製郵件內容,觸發條件以及郵件接收者,功能比基本郵件通知要靈活強大的多。
Slack Notification https://plugins.jenkins.io/slack,這個插件支持把構建結果推送到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
最後更新:2017-10-30 14:03:54