zoukankan      html  css  js  c++  java
  • Jenkins

    特别说明:本文是在原文基础上的改写和添加,但总体不影响原文表达,特此说明。
    原文链接 - Jenkins 高效插件推荐 | 运维生存时间

    前言

    开源版本的Jenkins具有三大能力:

    • Master-Slave的分布式构建调度能力
    • Pipeline编排能力
    • 强大的开源生态(插件)能力

    2017年4月,Jenkins创始人KK(Kohsuke Kawaguchi )来到中国,交流中他也明确表示Jenkins的成功主要取决于其开源生态系统,Jenkins有1400多个插件可供使用。
    因为有开源的插件生态系统的存在,Jenkins要用得好,插件一定是不能少的,需要我们充分发现和使用插件来实现我们的需求,而不是重复造轮子,自己去实现。

    但是面对林林总总的插件,到底该怎么选?
    我的常用需求有哪些插件可以满足,笔者根据以往在企业中管理Jenkins的经验推荐如下常用的插件列表,希望大家基于Jenkins及其插件生态实现自己的持续交付与DevOps平台。

    1 - 用户及权限

    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进行用户认证和授权的方案。
    
    Matrix Authorization Strategy 
    https://plugins.jenkins.io/matrix-auth
    提供了基于矩阵的授权策略,支持全局和项目级别的配置。
    
    Role-based Authorization Strategy 
    https://plugins.jenkins.io/role-strategy,
    提供了一种基于角色(Role)的用户权限管理策略,支持创建global角色、Project角色、Slave角色,以及给用户分配这些角色。
    是最常用的Jenkins权限策略和管理插件。
    

    2 - 代码管理

    Jenkins 项目中配置Source Code Management 去下载代码进行构建任务,是非常普遍的应用场景。
    Jenkins插件支持很多SCM的系统,使用最常见的是Git 和SVN。

    Git 
    https://plugins.jenkins.io/git
    支持使用Github、GitLab、Gerrit等系统管理代码仓库。
    
    Subversion 
    https://plugins.jenkins.io/subversion
    支持Subversion系统管理源代码,功能包括监视 Subversion 仓库变更来触发新的构建、自动更新执行机工作目录等。
    
    Maven
    https://plugins.jenkins.io/maven-plugin
    对 Maven 工程提供了更丰富的功能,包括:自动配置报告插件(如 JUnit、Findbugs 等),增量构建,并行构建等。
    

    3 - 项目及视图

    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 视图,用于显示上、下游项目构建的关系。
    
    Performance Plugin
    https://plugins.jenkins.io/performance
    可以读取和解析测试框架输出的报告,并且在 Jenkins 上绘制性能和稳定性相关的图表。
    

    4 - 构建触发

    Jenkins支持多种Build 触发方式,尤其一些自动化触发方式非常有用

    Build periodically
    Jenkins 内置功能,可以设置类似crontab时间,周期性地自动触发构建。
    
    Poll SCM
    Jenkins 内置功能,支持周期性地在后台检查所配置的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构建。
    

    5 - 构建参数

    Jenkins除了支持普通的参数类型(布尔型、字符串型、多行文本型、选择型和文件型 )外,还有一些插件支持更加丰富实用的参数类型,比如参数间动态关联、多层级参数、隐藏参数等 。

    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
    

    6 - 构建任务及环境

    围绕构建任务的一些实用功能。

    Timestamper
    在Jenkins控制台增加时间输出,可以方便定位。
    
    Publish Over SSH
    将构建产物或者指定命令下发到指定主机。
    
    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
    支持在构建任务的不同阶段插入环境变量,并且在构建结束导出所有的环境变量等功能。
    
    Build Pipeline plugin
    https://github.com/jenkinsci/build-pipeline-plugin
    可以让整个持续集成流程变得非常直观:项目管理员针对系统持续集成步骤设置一系列关联的任务,任务之间可以设置不同的触发条件,以确认何时需要人工介入。
    
    JIRA
    https://plugins.jenkins.io/jira
    可以让 Jenkins 任务和 JIRA 集成起来,项目管理者可以通过 JIRA 了解项目进度,开发者也可以通过该插件直接更改 JIRA 上的 issue 状态。
    

    7 - 构建通知

    把构建状态及时地通知用户。Jenkins支持多种主动和被动的通知方式。

    Mailer
    https://plugins.jenkins.io/mailer
    支持基本的邮件通知功能,比如构建失败和构建恢复成功可以发送邮件通知给相关人员。
    
    Email Extension
    https://plugins.jenkins.io/email-ext
    支持定制邮件内容,触发条件以及邮件接收者,功能比基本邮件通知要灵活强大的多。
    
    Slack Notification 
    https://plugins.jenkins.io/slack
    支持把构建结果推送到Slack channel。
    

    8 - 容器化

    Jenkins的Master-Slave架构实现了分布式构建,可以充分的横向扩展Slave来提升构建能力,将Slave容器化是目前主流的构建环境标准化、集群化和弹性化的方式。

    docker-plugin
    https://plugins.jenkins.io/docker-plugin
    可以配置docker host ,从而动态的提供Jenkins Agent(Slave),运行构建后再销毁这个slave。
    
    kubernetes
    https://plugins.jenkins.io/kubernetes
    Jenkins 对执行机的管理一直比较弱,无法做到快速的扩容和缩容。
    Kubernetes Plugin 通过引入 Kubernetes 的容器编排能力,让 Jenkins 执行机运行在 Kubernetes 环境中。
    支持利用Kubernetes  cluster 动态的提供Jenkins Agent(Slave),利用Kubernetes 调度机制来优化Jenkins 负载等。
    

    9 - Admin相关插件

    Configuration Slicing
    https://plugins.jenkins.io/configurationslicing
    支持批量修改项目配置
    
    SCM Sync Configuration Plugin
    https://plugins.jenkins.io/scm-sync-configuration
    可以自动将 Jenkins 任务配置同步到版本管理系统中。
    还可以跟踪配置的变更情况,让项目管理人员能够清晰的了解任务的修改情况。
    
    Mask Passwords
    https://plugins.jenkins.io/mask-passwords
    支持遮挡构建log输出的password等敏感信息
    
    Backup
    https://plugins.jenkins.io/backup
    添加备份功能到Jenkins management
    
  • 相关阅读:
    Android点击按钮退出程序并提醒
    Android项目如何打包成安装包.apk
    java之String字符串根据指定字符转化为字符串数组
    2021春季开课 课程计划
    Android:Unable to find explicit activity class报错
    不用写findViewById的偷懒方法
    人月神话阅读笔记03
    人月神话阅读笔记02
    javaweb验证码
    疫情地图展示
  • 原文地址:https://www.cnblogs.com/anliven/p/7277442.html
Copyright © 2011-2022 走看看