热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Jenkins项目类型及配置项

0.简介1.Freestyleproject1)General2)源码管理3)构建触发器4)构建环境5)构建6)构建后操作2.Maven项目1)所有配置项2)Build3.流水线1

0. 简介


1. Freestyle project



  • 1)General

  • 2)源码管理

  • 3)构建触发器

  • 4)构建环境

  • 5)构建

  • 6)构建后操作


2. Maven 项目



  • 1)所有配置项

  • 2)Build


3. 流水线



  • 1)所有配置项

  • 2)流水线


4. 多配置项目



  • 1)所有配置项

  • 2)Configuration Matrix

 

 


0. 简介

Jenkins 根据不同的项目需求对项目类型进行了分类,对于大多数项目类型,配置页面上都有常见的选项,比如基础设置、构建、源码管理等等。

下面简单的介绍下 Jenkins 支持的项目类型以及最常用项目的配置项,有些项目类型必须安装相应的插件后才能看到,比如 maven 项目。如果在第 1 次配置 Jenkins 时安装了推荐的插件后,在 Jenkins 首页单击新建 item 可以看到以下几种项目:

技术分享图片

 


1. Freestyle project

自由风格的项目

技术分享图片

 


1)General

用来为项目设定一些全局性的选项。


Discard old build(丢弃旧的构建)

作用:用来设置 Jenkins 的 jobs 保留最近几次的构建结果,可以避免占用大量的磁盘空间。

技术分享图片

参数:



  • 策略:只有一个默认值选项 Log Rotation,无须修改;

  • 保持构建的天数:设置保留最近几天的构建结果;保持构建的最大个数:设置保留最近几次的构建结果。

  • 高级:也可以进一步对制品的删除策略进行设置。一般不用设置


This project is parameterized(参数化构建)

作用:参数化构建,可以单击添加参数,在每次构建之前需要用户给参数赋值,根据不用的参数值执行不同的处理流程。

技术分享图片


Throttle build(节流构建)

作用:允许在一个指定的时间段内进行构建的次数。

技术分享图片

参数:



  • Number of builds:构建的次数

  • Time period:设置指定的时间段,单位可以是年、月、日、周、时、分、秒


关闭构建

作用:勾选此复选框后,此项目不会再执行。


在必要的时候并发构建

作用:默认情况下,不允许同一个项目执行并发构建。

勾选此复选框后,并且有足够的执行节点的话,就会执行并行构建。这一功能对长时间的构建项目或者是多场景的项目会很有用。

注意:在并发构建时,工作空间名称会附加 @#(其中 # 是一个数字)用于区分工作空间。但是如果没有使用默认工作空间的话,则所有并发构建都是在同一工作空间运行。


限制项目的运行节点

勾选此复选框后,允许你通过标签表达式来指定某一个或多个“标签”指定的节点来运行此项目。注意:标签是添加节点时设置的名称。

单击限制项目的运行节点选项下方的高级按钮,可以设置一些附件选项,具体如下:

Quiet period(安静期):

技术分享图片

作用:设置在项目构建前等待的秒数。如果这里没有设置,则使用系统默认的全局安静期。

此项主要用于支持遗留问题,比如 CVS,需要等待所有文件提交完成后才能开始构建,而不是在系统看到第一个时就开始执行。

重试次数:

技术分享图片

 作用:用于重试 SCM( Source Control Management)的检出次数。两次尝试之间有 10s 的间隔。

当上游项目正在构建时阻止构建:

作用:勾选此复选框后,如果此项目的某个依赖的上游项目正在构建或处于队列中时,则不允许构建该项目。

当下游项目正在构建时阻止构建:

作用:勾选此复选框后,如果其中的一个子项目正在构建或处于队列中,时,则不允许构建该项目。

使用自定义工作空间:

技术分享图片

作用:Jenkins 默认的工作空间是在“C:\Users\xxx\.Jenkins\workspace\项目名称”目录下,也可以在此处指定自定义的工作空间。

参数:



  • 目录:指定工作空间的位置,可以是绝对路径也可以是相对路径,如果是相对路径,则相对的是节点的根目录。注意:千万不要直接写磁盘的根目录,否则执行构建时会将目录下所有的内容删除!!

  • 显示名称:在 Jenkins web 界面中显示的值。

保留依赖的构建日志:

为了保留有上下游依赖的构建日志,此配置会覆盖日志循环策略。

 


2)源码管理

技术分享图片

根据安装的插件不同,界面中看到的配置项会有所差异,但是也都是大同小异,最常见的配置如下:



  • 仓库 URL:设置项目中能够访问的仓库位置,比如源码的存放位置,或者测试脚本的存放位置等。

  • 凭证:用于访问 SCM 的用户名密码、ssh 密钥、token 等凭证。

  • 版本:配置要使用的代码的具体版本。

  • git 仓库的配置项。


 


3)构建触发器

构建触发器用来设置触发项目构建的时间或者事件。


触发远程构建

技术分享图片

勾选此复选框之后,Jenkins 会提供一个特定的 URL 用来触发项目的自动构建,可以看下面的那行提示信息。为了安全起见,可以看到在 URL 之后还会要求有一个用于授权的 Token 字段(需要在 Manage Jenkins-->Manage Users 中对用户进行设置)。这样就可以使用 wget 或 curl 这样的工具触发构建。


Build after other projects are built(其它项目构建完成后构建)

技术分享图片

用来设置在某个项目构建完成后才能触发本项目的构建。而且可以对其它项目的具体构建结果进行设定,比如,稳定的(成功),不稳定的,失败的。比如我们需要在 war 包发布成功后,再进行测试脚本的执行,这种场景下就可以配置此项。


Build periodically(周期性构建)

技术分享图片

这是一种类似于 crontab 命令的功能,可以指定在某个或某些具体时间自动进行项目的执行。包含 5 个字段,这些字段以空格或者 Tab 键分割,用来指定多久去执行一次构建。格式为:



  1. MINUTES:一小时内的分钟,取值范围(0-59)

  2. HOURS:一天内的小时,取值范围(0-23)

  3. DAYMONTH :一个月中的某一天,取值范围(1-31)

  4. MONTH :月份,取值范围(1-12)

  5. DAYWEEK:一周中的星期几,取值范围(0-7)。0 和 7 都表示星期日

还可以使用特殊的字符一次指定多个值:



  1. *:匹配所有的值

  2. N:匹配 M-N 之间的值

  3. M-N/ 或者 */:表示每隔 ,比如 */5 每隔 5 分钟

  4. A,B,...Z:多个枚举值

  5. 5H:可以用于任何字段,用来告诉 Jenkins 在一个范围内使用该项目名的散列值计算出一个唯一的偏移量,这个偏移量于范围内的最小值相加后定义为实际的执行时间。注意:这个值是项目名的散列值,那么每一个值都与其他项目是不同的,但是同一个项目的值是不变的。

H 符号在实际的项目中是非常推荐使用的,因为在大型的项目中可能存在多个同一时刻需要执行任务,比如(0 0 * * *),都需要在半夜零点启动,那么使用 H 后,从散列算法获得的偏移量,就可以错开执行具有相同 cron 时间的项目。

示例:


# every fifteen minutes (perhaps at :07, :22, :37, :52).
H/15 * * * *
# every ten minutes in the first half of every hour (three times, perhaps at :04, :14, :24).
H(0-29)/10 * * * *
# once every two hours at 45 minutes past the hour starting at 9:45 AM and finishing at 3:45 PM every weekday.
45 9-16/2 * * 1-5
# once in every two hours slot between 9 AM and 5 PM every weekday (perhaps at 10:38 AM, 12:38 PM, 2:38 PM, 4:38 PM).
H H(9-16)/2 * * 1-5
# once a day on the 1st and 15th of every month except December.
H H 1,15 1-11 *


Generic Webhook Trigger

一种通用的生成 webhook 的插件,不局限于 github。


Github hook trigger for GITScm polling

专门针对于 github 仓库的配置项,需要安装 Github Integration plugin 插件才能看到。

这种方式要求设置一个 github 服务,以便在 github 仓库中有指定的事件发生时,向 Jenkins 发送通知,而无需 Jenkins 不断的轮询。


Poll SCM(轮询 SCM)

技术分享图片

就是定期到指定的代码仓库查询是否有变化,如果有变化就执行。语法同 cron 是一样的。

与周期性构建的区别就是,让 Jenkins 在指定的时间去检查代码仓库是否有变化,有变化了才运行项目,而不是直接到点了就运行项目。

注意:最下面一行有一个复选框,忽略 post-commit 钩子,就是告诉 Jenkins 要忽略来自钩子的信号,目的就是为了防止重复触发操作。

 


4)构建环境

可以用来对项目指定某些全局操作和集成设置。这些选项有很多,根据安装的插件不同,显示出来的也不同。


Delete workspace before build starts(构建前删除工作空间)

就是在构建前先将工作空间删除。


Use secret text(s) or file(s)(使用机密文本或文件)

技术分享图片

安装了凭证绑定插件(Credentials Biding plugin)才会看到此配置项。创建凭证时会为其指定一个全局变量名,然后就可以在任务中使用此全局变量代替凭证中的敏感信息,在执行构建时,会将实际值对全局变量进行替换。

下图以用户名和密码为例:

技术分享图片


Abort the build if it‘s stuck

技术分享图片

用来配置超时的策略和指定值,以便在构建时间过长时停止构建,有 3 个可以配置的参数:

1)Time-out strategy:可以使用的策略有 5 种:



  1. Absolute(绝对的):根据固定的超时时间中止构建;

  2. Deadline(截止时间):截止时间格式为 HH:MM:SS

  3. Elastic(弹性):定义终止构建前的等待时间,以最后 n 次成功构建的平均持续时间的百分比表示

  4. Likely stuck(可能卡住):当任务运行的时间比以前多很多倍时,终止构建

  5. No Activity(没有活动):自上次日志输出后,经过指定的秒数后触发超时

2) Time-out variable:定义一个自动填充超时的环境变量,以 ms 为单位,可以在任务中引用此变量,如:

3) Time-out actions:用来定义超时之后采取的行动,包括终止构建、构建失败以及将信息写入到正在运行任务的描述字段中。

示例:

技术分享图片


Add timestamps to the Console Output

顾名思义,就是在控制台打印执行日志的时候加上时间戳显示,如下:

技术分享图片


其它构建环境选项

如果安装了其它插件,可能会看到更多的环境选项,比如 Ant、gradle 或者 Maven,需要的话可以单击选项右侧的蓝色问号查看帮助信息即可。

 


5)构建

技术分享图片

此部分是项目中的主要实现逻辑,根据项目类型的不同,在此配置项目中看到的功能也会有所不同,最常用的就是 shell 命令或者 windows 下的批处理命令。在后续的项目实战中会对此配置做具体的说明。

 


6)构建后操作

用来设置在项目执行完毕后做的一些操作,比如,发邮件,将构建结果发布到指定的目录等等。有些是需要安装特定的插件才能看到对应的配置项,如下:

技术分享图片

同样地,此部分在后续的项目实战中会对此配置做具体的说明。

 


2. Maven 项目

技术分享图片

 


1)所有配置项

技术分享图片

可以看出,大部分的配置项和自由风格的项目类似,只是将构建的步骤拆分为了 3 个,分别为:Pre Step、Build 和 Post Steps。将一些传统的非 Maven 构建步骤移到 Pre Step 和 Post Steps 中,这两步支持的步骤都是相同的。 

技术分享图片     技术分享图片

  


2)Build

技术分享图片

默认使用项目根 POM 文件名,也就是 pom.xml 名,也可以指定实际适使用的具体的文件路径,比如 parent/pom.xml。在 maven 项目中会自动对制品进行归档。

 


3. 流水线

流水线项目是将来主流的 Jenkins 任务实现方式,也是 Jenkins 社区极力推崇的,目的是将任务中的步骤和逻辑使用 Groovy 脚本实现,而不用繁琐的表单配置,更符合程序员的思维。

技术分享图片

 


1)所有配置项

有一个专门的流水线配置项,其它项可参考自由风格项目中的配置说明。

技术分享图片

 


2)流水线

有 2 种定义方式,分别为:

Pipeline script :默认值,可以在富文本框中直接输入 pipeline 脚本。

技术分享图片

Pipeline script from SCM:需要制指定 Jenkinsfile 的仓库位置轻量级检出项的作用是,开始时只检查 Jenkinsfile 文件而不是整个项目,然后通过 Jenkins file 执行 checkout scm 语句,可避免两次检出整个项目,提升效率。

技术分享图片

注意:通过配置项目中我们可以看到,在流水线项目中也会有一些简单的表单配置项,比如参数化构建,这些参数可以在流水线部分定义的脚本中进行访问,但是如果使用的是 Jenkins file 的话,文件本身和配置是分开的,使用起来会不方便,这时最好是在 Jenkins file 中定义此功能。

 


4. 多配置项目

此类型的项目和自由风格的项目配置比较类似,主要是多了一个 Configuration Matrix 项。

此类项目用来做多场景多配置的混合测试,比如说要使用 Chrome、Firefox 和 IE 浏览器分别测试,还要使用 Windows、MAC 等系统运行测试构建。如果没有这种项目类型,那么需要 3*2 也就是 6 个任务来重复做同样的流程。

技术分享图片

 


1)所有配置项

技术分享图片

可以看到多配置的项目和其它项目类似,重点是多了 Configuration Matrix 项。

 


2)Configuration Matrix

可以在此项中定义 3 种类型的坐标轴,每个坐标轴有 1 个名称,每个名称对应一个环境变量。可以添加到配置矩阵中的坐标轴类型有以下 4 种:

技术分享图片



  1. JDK用来定义不同的 JDK 版本的标签,如果项目需要在不同的 JDK 下测试可以添加此种来下的坐标轴。

  2. Label expression用来使用高级语法选择要包含哪个节点的集合。例如,node1$$node2 表示只有具有这两个标签的节点才有资格包含在内。

  3. Slaves指定所使用节点的名称,或者节点的标签。

  4. User-defined Axis用户自定义的一组值,用来在构建任务时进行迭代。


示例:

Configuration Matrix 添加 2 个坐标轴,分别为:

技术分享图片

构建部分的内容如下:


echo "******************start"
echo
"Executing Configuration Matrix %browser% for %label%"
echo
"******************end

技术分享图片

配置成功后,在项目首页看到的任务矩阵如下:

技术分享图片

相当于会执行 6 遍,分别使用 6 个不同的配置。
 

 


推荐阅读
  • 在使用Eclipse进行调试时,如果遇到未解析的断点(unresolved breakpoint)并显示“未加载符号表,请使用‘file’命令加载目标文件以进行调试”的错误提示,这通常是因为调试器未能正确加载符号表。解决此问题的方法是通过GDB的`file`命令手动加载目标文件,以便调试器能够识别和解析断点。具体操作为在GDB命令行中输入 `(gdb) file `。这一步骤确保了调试环境能够正确访问和解析程序中的符号信息,从而实现有效的调试。 ... [详细]
  • LDAP服务器配置与管理
    本文介绍如何通过安装和配置SSSD服务来统一管理用户账户信息,并实现其他系统的登录调用。通过图形化交互界面配置LDAP服务器,确保用户账户信息的集中管理和安全访问。 ... [详细]
  • 网络爬虫的规范与限制
    本文探讨了网络爬虫引发的问题及其解决方案,重点介绍了Robots协议的作用和使用方法,旨在为网络爬虫的合理使用提供指导。 ... [详细]
  • 本文详细介绍了DMA控制器如何通过映射表处理来自外设的请求,包括映射表的设计和实现方法。 ... [详细]
  • Spark中使用map或flatMap将DataSet[A]转换为DataSet[B]时Schema变为Binary的问题及解决方案
    本文探讨了在使用Spark的map或flatMap算子将一个数据集转换为另一个数据集时,遇到的Schema变为Binary的问题,并提供了详细的解决方案。 ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • 解决Parallels Desktop错误15265的方法
    本文详细介绍了在使用Parallels Desktop时遇到错误15265的多种解决方案,包括检查网络连接、关闭代理服务器和修改主机文件等步骤。 ... [详细]
  • 解决 Windows Server 2016 网络连接问题
    本文详细介绍了如何解决 Windows Server 2016 在使用无线网络 (WLAN) 和有线网络 (以太网) 时遇到的连接问题。包括添加必要的功能和安装正确的驱动程序。 ... [详细]
  • CentOS 7 中 iptables 过滤表实例与 NAT 表应用详解
    在 CentOS 7 系统中,iptables 的过滤表和 NAT 表具有重要的应用价值。本文通过具体实例详细介绍了如何配置 iptables 的过滤表,包括编写脚本文件 `/usr/local/sbin/iptables.sh`,并使用 `iptables -F` 清空现有规则。此外,还深入探讨了 NAT 表的配置方法,帮助读者更好地理解和应用这些网络防火墙技术。 ... [详细]
  • 在 LeetCode 的“有效回文串 II”问题中,给定一个非空字符串 `s`,允许删除最多一个字符。本篇深入解析了如何判断删除一个字符后,字符串是否能成为回文串,并提出了高效的优化算法。通过详细的分析和代码实现,本文提供了多种解决方案,帮助读者更好地理解和应用这一算法。 ... [详细]
  • 系统数据实体验证异常:多个实体验证失败的错误处理与分析
    在使用MVC和EF框架进行数据保存时,遇到了 `System.Data.Entity.Validation.DbEntityValidationException` 错误,表明存在一个或多个实体验证失败的情况。本文详细分析了该错误的成因,并提出了有效的处理方法,包括检查实体属性的约束条件、调试日志的使用以及优化数据验证逻辑,以确保数据的一致性和完整性。 ... [详细]
  • MySQL的查询执行流程涉及多个关键组件,包括连接器、查询缓存、分析器和优化器。在服务层,连接器负责建立与客户端的连接,查询缓存用于存储和检索常用查询结果,以提高性能。分析器则解析SQL语句,生成语法树,而优化器负责选择最优的查询执行计划。这一流程确保了MySQL能够高效地处理各种复杂的查询请求。 ... [详细]
  • 装饰者模式(Decorator):一种灵活的对象结构设计模式
    装饰者模式(Decorator)是一种灵活的对象结构设计模式,旨在为单个对象动态地添加功能,而无需修改原有类的结构。通过封装对象并提供额外的行为,装饰者模式比传统的继承方式更加灵活和可扩展。例如,可以在运行时为特定对象添加边框或滚动条等特性,而不会影响其他对象。这种模式特别适用于需要在不同情况下动态组合功能的场景。 ... [详细]
  • 本项目通过Python编程实现了一个简单的汇率转换器v1.02。主要内容包括:1. Python的基本语法元素:(1)缩进:用于表示代码的层次结构,是Python中定义程序框架的唯一方式;(2)注释:提供开发者说明信息,不参与实际运行,通常每个代码块添加一个注释;(3)常量和变量:用于存储和操作数据,是程序执行过程中的重要组成部分。此外,项目还涉及了函数定义、用户输入处理和异常捕获等高级特性,以确保程序的健壮性和易用性。 ... [详细]
  • 本文详细解析了Autofac在高级应用场景中的具体实现,特别是如何通过注册泛型接口的类来优化依赖注入。示例代码展示了如何使用 `builder.RegisterAssemblyTypes` 方法,结合 `typeof(IEventHandler).Assembly` 和 `Where` 过滤条件,动态注册所有符合条件的类,从而简化配置并提高代码的可维护性。此外,文章还探讨了这一方法在复杂系统中的实际应用及其优势。 ... [详细]
author-avatar
一个不起眼的小人物
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有