Jenkins 服务 Pipeline 基础介绍和语法介绍 -2

2020-06-17 0 By admin

接上文:

Jenkins 服务 Pipeline 基础介绍和语法介绍 -1

3.4、Pipeline支持的指令

显然,基本结构满足不了现实多变的需求。所以,Jenkins pipeline通过各种指令(directive)来丰富自己。指令可以被理解为对Jenkins pipeline基本结构的补充。
Jenkins pipeline支持的指令有:

  1. environment:用于设置环境变量,可定义在stage或pipeline部分。
  2. tools:可定义在pipeline或stage部分。它会自动下载并安装我们指定的工具,并将其加入PATH变量中。
  3. input:定义在stage部分,会暂停pipeline,提示你输入内容。
  4. options:用于配置Jenkins pipeline本身的选项,比如options {retry(3)}指当pipeline失败时再重试2次。options指令可定义在stage或pipeline部分。
  5. parallel:并行执行多个step。在pipeline插件1.2版本后,parallel开始支持对多个阶段进行并行执行。
  6. parameters:与input不同,parameters是执行pipeline前传入的一些参数。
  7. triggers:用于定义执行pipeline的触发器。
  8. when:当满足when定义的条件时,阶段才执行。

在使用指令时,需要注意的是每个指令都有自己的“作用域”。如果指令使用的位置不正确,Jenkins将会报错。

3.5、配置 Pipeline 本身 (options 指令)

options指令用于配置整个Jenkins pipeline本身的选项。
根据具体的选项不同,可以将其放在 pipeline 块或 stage块 中。以下例子若没有特别说明,options被放在pipeline块中。

  1. buildDiscarder:保存最近历史构建记录的数量。设置此选项后会自动清理pipeline 的构建历史。
  2. checkoutToSubdirectory:Jenkins从版本控制库拉取源码时,默认检出到工作空间的根目录中,此选项可以指定检出到工作空间的子目录中。
  3. disableConcurrentBuilds:同一个pipeline,Jenkins默认是可以多个任务同时执行的。
  4. newContainerPerStage:当agent为docker或dockerfile时,指定在同一个Jenkins节点上,每个stage都分别运行在一个新的容器中,而不是所有stage都运行在同一个容器中。
  5. retry:当发生失败时进行重试,可以指定整个pipeline的重试次数。需要注意的是,这个次数是指总次数,包括第1次失败。
  6. timeout:如果pipeline 执行时间过长,超出了我们设置的timeout 时间,Jenkins 将中止pipeline。

3.6、在声明式 Pipeline 中使用脚本

在使用声明式pipeline一段时间后,你会发现直接在steps块中写if-else,或者定义一个变量,Jenkins都会报错。也就是不能直接在steps块中写Groovy代码。
Jenkins pipeline专门提供了一个script步骤,你能在script步骤中像写代码一样写pipeline逻辑。

四、Pipeline 内置基础步骤

3.1、文件目录相关步骤

  1. deleteDir:是一个无参步骤,删除的是当前工作目录。通常它与dir步骤一起使用,用于删除指定目录下的内容。
  2. dir: 默认pipeline工作在工作空间目录下,dir步骤可以让我们切换到其他目录。
  3. fileExists:判断文件是否存在
  4. isUnix:判断是否为类UNIX系统
  5. pwd:确认当前目录
  6. writeFile:将内容写入指定文件中;参数为:file,text,encoding
  7. readFile:读取文件内容;参数为:file,encoding

3.2、制品相关步骤

  1. stash :步骤可以将一些文件保存起来,以便被同一次构建的其他步骤或阶段使用。
  2. unstash:取出之前stash的文件

3.3、命令相关步骤

与命令相关的步骤其实是 Pipeline:Nodes and Processes 插件提供的步骤。由于它是P ipeline 插件的一个组件,所以基本不需要单独安装
sh:执行shell命令
sh步骤支持的参数有:

  1. script:将要执行的shell脚本,通常在类UNIX系统上可以是多行脚本。
  2. encoding:脚本执行后输出日志的编码,默认值为脚本运行所在系统的编码。
  3. returnStatus:布尔类型,默认脚本返回的是状态码,如果是一个非零的状态码,则会引发pipeline执行失败。如果returnStatus参数为true,则不论状态码是什么,pipeline的执行都不会受影响。
  4. returnStdout:布尔类型,如果为true,则任务的标准输出将作为步骤的返回值,而不是打印到构建日志中(如果有错误,则依然会打印到日志中)。除了script参数,其他参数都是可选的。

returnStatus与returnStdout参数一般不会同时使用,因为返回值只能有一个。如果同时使用,则只有returnStatus参数生效。

bat、powershell步骤
bat步骤执行的是Windows的批处理命令。powershell步骤执行的是PowerShell脚本,支持3+版本。这两个步骤支持的参数与sh步骤的一样,这里就不重复介绍了

3.4、其他步骤

  1. error:主动报错,中止当前pipeline
  2. tool:使用预定义的工具;在Global Tool Configuration(全局工具配置)中配置了工具。
  3. timeout:代码块超时时间
  4. waitUntil:等待条件满足
  5. retry:重复执行块
  6. sleep:让pipeline休眠一段时间