Jenkins 根据不同的项目需求对项目类型进行了分类,对于大多数项目类型,配置页面上都有常见的选项,比如基础设置、构建、源码管理等等。
下面简单的介绍下 Jenkins 支持的项目类型以及最常用项目的配置项,有些项目类型必须安装相应的插件后才能看到,比如 maven 项目。如果在第 1 次配置 Jenkins 时安装了推荐的插件后,在 Jenkins 首页单击新建 item 可以看到以下几种项目:
自由风格的项目:
用来为项目设定一些全局性的选项。
作用:用来设置 Jenkins 的 jobs 保留最近几次的构建结果,可以避免占用大量的磁盘空间。
参数:
作用:参数化构建,可以单击添加参数,在每次构建之前需要用户给参数赋值,根据不用的参数值执行不同的处理流程。
作用:允许在一个指定的时间段内进行构建的次数。
参数:
作用:勾选此复选框后,此项目不会再执行。
作用:默认情况下,不允许同一个项目执行并发构建。
勾选此复选框后,并且有足够的执行节点的话,就会执行并行构建。这一功能对长时间的构建项目或者是多场景的项目会很有用。
注意:在并发构建时,工作空间名称会附加 @#(其中 # 是一个数字)用于区分工作空间。但是如果没有使用默认工作空间的话,则所有并发构建都是在同一工作空间运行。
勾选此复选框后,允许你通过标签表达式来指定某一个或多个“标签”指定的节点来运行此项目。注意:标签是添加节点时设置的名称。
单击限制项目的运行节点选项下方的高级按钮,可以设置一些附件选项,具体如下:
Quiet period(安静期):
作用:设置在项目构建前等待的秒数。如果这里没有设置,则使用系统默认的全局安静期。
此项主要用于支持遗留问题,比如 CVS,需要等待所有文件提交完成后才能开始构建,而不是在系统看到第一个时就开始执行。
重试次数:
作用:用于重试 SCM( Source Control Management)的检出次数。两次尝试之间有 10s 的间隔。
当上游项目正在构建时阻止构建:
作用:勾选此复选框后,如果此项目的某个依赖的上游项目正在构建或处于队列中时,则不允许构建该项目。
当下游项目正在构建时阻止构建:
作用:勾选此复选框后,如果其中的一个子项目正在构建或处于队列中,时,则不允许构建该项目。
使用自定义工作空间:
作用:Jenkins 默认的工作空间是在“C:\Users\xxx\.Jenkins\workspace\项目名称”目录下,也可以在此处指定自定义的工作空间。
参数:
保留依赖的构建日志:
为了保留有上下游依赖的构建日志,此配置会覆盖日志循环策略。
根据安装的插件不同,界面中看到的配置项会有所差异,但是也都是大同小异,最常见的配置如下:
构建触发器用来设置触发项目构建的时间或者事件。
勾选此复选框之后,Jenkins 会提供一个特定的 URL 用来触发项目的自动构建,可以看下面的那行提示信息。为了安全起见,可以看到在 URL 之后还会要求有一个用于授权的 Token 字段(需要在 Manage Jenkins-->Manage Users 中对用户进行设置)。这样就可以使用 wget 或 curl 这样的工具触发构建。
用来设置在某个项目构建完成后才能触发本项目的构建。而且可以对其它项目的具体构建结果进行设定,比如,稳定的(成功),不稳定的,失败的。比如我们需要在 war 包发布成功后,再进行测试脚本的执行,这种场景下就可以配置此项。
这是一种类似于 crontab 命令的功能,可以指定在某个或某些具体时间自动进行项目的执行。包含 5 个字段,这些字段以空格或者 Tab 键分割,用来指定多久去执行一次构建。格式为:
还可以使用特殊的字符一次指定多个值:
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 *
一种通用的生成 webhook 的插件,不局限于 github。
专门针对于 github 仓库的配置项,需要安装 Github Integration plugin 插件才能看到。
这种方式要求设置一个 github 服务,以便在 github 仓库中有指定的事件发生时,向 Jenkins 发送通知,而无需 Jenkins 不断的轮询。
就是定期到指定的代码仓库查询是否有变化,如果有变化就执行。语法同 cron 是一样的。
与周期性构建的区别就是,让 Jenkins 在指定的时间去检查代码仓库是否有变化,有变化了才运行项目,而不是直接到点了就运行项目。
注意:最下面一行有一个复选框,忽略 post-commit 钩子,就是告诉 Jenkins 要忽略来自钩子的信号,目的就是为了防止重复触发操作。
可以用来对项目指定某些全局操作和集成设置。这些选项有很多,根据安装的插件不同,显示出来的也不同。
就是在构建前先将工作空间删除。
安装了凭证绑定插件(Credentials Biding plugin)才会看到此配置项。创建凭证时会为其指定一个全局变量名,然后就可以在任务中使用此全局变量代替凭证中的敏感信息,在执行构建时,会将实际值对全局变量进行替换。
下图以用户名和密码为例:
用来配置超时的策略和指定值,以便在构建时间过长时停止构建,有 3 个可以配置的参数:
1)Time-out strategy:可以使用的策略有 5 种:
2) Time-out variable:定义一个自动填充超时的环境变量,以 ms 为单位,可以在任务中引用此变量,如:
3) Time-out actions:用来定义超时之后采取的行动,包括终止构建、构建失败以及将信息写入到正在运行任务的描述字段中。
示例:
顾名思义,就是在控制台打印执行日志的时候加上时间戳显示,如下:
如果安装了其它插件,可能会看到更多的环境选项,比如 Ant、gradle 或者 Maven,需要的话可以单击选项右侧的蓝色问号查看帮助信息即可。
此部分是项目中的主要实现逻辑,根据项目类型的不同,在此配置项目中看到的功能也会有所不同,最常用的就是 shell 命令或者 windows 下的批处理命令。在后续的项目实战中会对此配置做具体的说明。
用来设置在项目执行完毕后做的一些操作,比如,发邮件,将构建结果发布到指定的目录等等。有些是需要安装特定的插件才能看到对应的配置项,如下:
同样地,此部分在后续的项目实战中会对此配置做具体的说明。
可以看出,大部分的配置项和自由风格的项目类似,只是将构建的步骤拆分为了 3 个,分别为:Pre Step、Build 和 Post Steps。将一些传统的非 Maven 构建步骤移到 Pre Step 和 Post Steps 中,这两步支持的步骤都是相同的。
默认使用项目根 POM 文件名,也就是 pom.xml 名,也可以指定实际适使用的具体的文件路径,比如 parent/pom.xml。在 maven 项目中会自动对制品进行归档。
流水线项目是将来主流的 Jenkins 任务实现方式,也是 Jenkins 社区极力推崇的,目的是将任务中的步骤和逻辑使用 Groovy 脚本实现,而不用繁琐的表单配置,更符合程序员的思维。
有一个专门的流水线配置项,其它项可参考自由风格项目中的配置说明。
有 2 种定义方式,分别为:
Pipeline script :默认值,可以在富文本框中直接输入 pipeline 脚本。
Pipeline script from SCM:需要制指定 Jenkinsfile 的仓库位置轻量级检出项的作用是,开始时只检查 Jenkinsfile 文件而不是整个项目,然后通过 Jenkins file 执行 checkout scm 语句,可避免两次检出整个项目,提升效率。
注意:通过配置项目中我们可以看到,在流水线项目中也会有一些简单的表单配置项,比如参数化构建,这些参数可以在流水线部分定义的脚本中进行访问,但是如果使用的是 Jenkins file 的话,文件本身和配置是分开的,使用起来会不方便,这时最好是在 Jenkins file 中定义此功能。
此类型的项目和自由风格的项目配置比较类似,主要是多了一个 Configuration Matrix 项。
此类项目用来做多场景多配置的混合测试,比如说要使用 Chrome、Firefox 和 IE 浏览器分别测试,还要使用 Windows、MAC 等系统运行测试构建。如果没有这种项目类型,那么需要 3*2 也就是 6 个任务来重复做同样的流程。
可以看到多配置的项目和其它项目类似,重点是多了 Configuration Matrix 项。
可以在此项中定义 3 种类型的坐标轴,每个坐标轴有 1 个名称,每个名称对应一个环境变量。可以添加到配置矩阵中的坐标轴类型有以下 4 种:
Configuration Matrix 添加 2 个坐标轴,分别为:
构建部分的内容如下:
echo "******************start" echo "Executing Configuration Matrix %browser% for %label%" echo "******************end
配置成功后,在项目首页看到的任务矩阵如下:
相当于会执行 6 遍,分别使用 6 个不同的配置。
原文:https://www.cnblogs.com/juno3550/p/14679334.html