jenkins教程:jenkinsfile语法之environment、options
Declarative pipeline也包含了各种指令,比如environment,options,parameters,triggers等,指令不是必须出现的指令。
environment
定义 Pipeline或stage运行时的环境变量,位于pipeline块顶部的 environment
定义的环境变量适用于流水线中的所有步骤,stage
中定义的 environment
只能应用于 stage
中的步骤。
pipeline {
agent any
environment {
CC = 'clang'
}
stages {
stage('Example') {
environment {
hlw = 'hello world'
}
steps {
echo hlw
}
}
}
}
options
options指令允许在Pipeline内部定义 pipeline专有属性。
pipeline可用选项:
buildDiscarder
:保持构建的最大个数,超过最大构建数后会丢弃以前的构建。checkoutToSubdirectory
:在工作区的子目录中执行自动源代码控制checkout 。disableConcurrentBuilds
:禁止并行执行 pipeline任务,可用于防止同时访问共享资源。disableResume
:如果控制器重启,不允许管道恢复。newContainerPerStage
:与docker或dockerfile顶级代理一起使用。指定后,每个阶段将运行在同一节点上的新容器实例中,而不是所有阶段都运行在同一个容器实例中。overrideIndexTriggers
:允许重写分支索引触发器的默认处理方法。如果分支索引触发器在多分支或组织标签处被禁用,options { overrideIndexTriggers(true) }
将仅为该job启用。否则,options { overrideIndexTriggers(false) }
将只禁用该job的分支索引触发器。preserveStashes
:保留已完成构建的stashes ,以便在stage 重启时使用。例如:options {preserveStashes()}
用于保存最近完成构建的stashes ,或者options {preserveStashes(buildCount: 5)}
用于保存最近完成构建的五个堆栈。quietPeriod
:为Pipeline设置静默期(以秒为单位),覆盖全局默认值。例如:options {quietPeriod(30)}
skipDefaultCheckout
:在agent指令中,默认情况下跳过从源代码Checkout代码。例如:options {skipDefaultCheckout()}
skipStagesAfterUnstable
:一旦构建状态变为 “Unstable“ 状态,就跳过stages。例如:options {skipstagesafterstable ()}
retry
:失败后,重试整个 Pipeline的次数例如:options { retry(3) }
timeout
:为Pipeline的运行设置一个超时时间,在此之后,Jenkins就中止Pipeline。例如:options {timeout(time: 1, unit: 'HOURS')}
timestamps
:在所有由Pipeline运行生成的控制台输出前加上间。例如:options {timestamp ()}
parallelsAlwaysFailFast
:将流水线中所有后续并行阶段的failfast设置为true,用于并行执行stage中。例如:options {parallelsAlwaysFailFast()}
stage的options指令类似于Pipeline的options指令。然而,stage选项只能包含retry
, timeout
, 或 timestamps
的步骤,或者与stage相关的声明性选项,比如skipDefaultCheckout
。
在stage中,在进入agent或检查任何 when条件之前调用options指令中的步骤。
stage 可用选项:
skipDefaultCheckout
timeout
:为当前stage的运行设置一个超时时间retry
timestamps
示例脚本:
pipeline {
agent any
options {
timeout (time: 1, unit: 'HOURS')
buildDiscarder(logRotator(numToKeepStr: '2')
retry(5)
}
stages {
stage('init') {
options {
timeout(time: 30, unit: 'SECONDS')
}
steps {
echo 'Hello World'
}
}
}
}