阅读目录
一、Pipeline概念
1 node/agent(节点)
节点是一个机器,可以是Jenkins的master节点也可以是slave节点。通过node指定当前job运行的机器(这个是脚本式语法)。
1 2 3 4 |
|
node允许额外都选项
1 2 3 |
|
2 stage(阶段)
stage定义了在整个流水线的执行任务的概念性的不同的阶段。例如: GetCode、Build、Test、Deploy、CodeScan每个阶段。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
3 step(步骤)
step是每个阶段中要执行的每个步骤。例如: 在执行GetCode的时候需要判断用户提供的参数srcType的值是Git还是svn。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
|
4.post
post
部分定义一个或多个steps ,这些阶段根据流水线或阶段的完成情况而 运行(取决于流水线中 post
部分的位置). post
支持以下 post-condition 块中的其中之一: always
, changed
, failure
, success
, unstable
, 和 aborted
。这些条件块允许在 post
部分的步骤的执行取决于流水线或阶段的完成状态。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
5.指令
5.1 environment环境变量
定义流水线环境变量,可以定义在全局变量或者步骤中的局部变量。这取决于 environment 指令在流水线内的位置。
该指令支持一个特殊的助手方法 credentials()
,该方法可用于在Jenkins环境中通过标识符访问预定义的凭证。对于类型为 "Secret Text"的凭证, credentials()
将确保指定的环境变量包含秘密文本内容。对于类型为 "SStandard username and password"的凭证, 指定的环境变量指定为 username:password
,并且两个额外的环境变量将被自动定义 :分别为 MYVARNAME_USR
和 MYVARNAME_PSW
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
5.2 options运行选项
options
指令允许从流水线内部配置特定于流水线的选项。 流水线提供了许多这样的选项, 比如 buildDiscarder
,但也可以由插件提供, 比如 timestamps
.
可用选项
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
|
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
5.3 parameters参数
parameters
指令提供了一个用户在触发流水线时应该提供的参数列表。这些用户指定参数的值可通过 params
对象提供给流水线步骤
可用options
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
5.4 triggers触发器
triggers
指令定义了流水线被重新触发的自动化方法。对于集成了源( 比如 GitHub 或 BitBucket)的流水线, 可能不需要 triggers
,因为基于 web 的集成很肯能已经存在。 当前可用的触发器是 cron
, pollSCM
和 upstream
。
1 2 3 4 5 6 7 8 |
|
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
5.5 tools构建工具
构建工具maven、ant、gradle,获取通过自动安装或手动放置工具的环境变量。工具的名称必须在系统设置->全局工具配置中定义。
支持工具
1 2 3 |
|
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
5.6 input交互输入
input用户在执行各个阶段的时候,由人工确认是否继续进行。
1 2 3 4 5 |
|
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
参数解释
1 2 3 4 5 6 |
|
5.7 when
when 指令允许流水线根据给定的条件决定是否应该执行阶段。 when 指令必须包含至少一个条件。 如果 when
指令包含多个条件, 所有的子条件必须返回True,阶段才能执行。
内置条件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
|
示例1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
示例2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
示例3
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
|
示例4
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
示例5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
示例6
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
5.8 parallel并行
声明式流水线的阶段可以在他们内部声明多隔嵌套阶段, 它们将并行执行。 注意,一个阶段必须只有一个 steps 或 parallel的阶段。 嵌套阶段本身不能包含 进一步的 parallel 阶段, 但是其他的阶段的行为与任何其他 stageparallel 的阶段不能包含 agent 或 tools阶段, 因为他们没有相关 steps。
另外, 通过添加 failFast true
到包含 parallel`的 `stage
中, 当其中一个进程失败时,你可以强制所有的 parallel
阶段都被终止
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
|
5.9 script
script
步骤需要 [scripted-pipeline]块并在声明式流水线中执行。 对于大多数用例来说,应该声明式流水线中的“脚本”步骤是不必要的, 但是它可以提供一个有用的"逃生出口"。 复杂性的 script
块应该被转移到 共享库 。
示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
参考:https://www.jenkins.io/doc/book/pipeline/syntax/