前言:
pipeline语法分类一般来说,有四种。分别是环境配置、阶段步骤、行为动作、逻辑判断。
二、阶段步骤
(1)post
根据pipeline块或者stage块(阶段)完成的状态来进行一个或者多个附加步骤(取决于该post部分在pipeline中的位置)
参数 | 描述 |
always | post无论pipeline块或者stage块运行的完成状态如何,都运行该部分中的步骤。 |
changed | 仅post当当前 Pipeline 的运行与之前的运行具有不同的完成状态时才运行步骤。 |
fixed | 仅post当当前 Pipeline 运行成功且前一次运行失败或不稳定时才运行步骤。 |
regression | 仅post当当前Pipeline的或状态为失败、不稳定或中止且前一次运行成功时才运行步骤。 |
aborted | 仅post当当前Pipeline的运行处于“中止”状态时才运行步骤,通常是由于流水线被手动中止。这通常在 Web UI 中用灰色表示。 |
failure | 仅post当当前pipeline块或者stage块的运行处于“失败”状态时才运行步骤,通常在 Web UI 中用红色表示。 |
success | 仅post当当前pipeline块或者stage块的运行具有“成功”状态时才运行步骤,通常在 Web UI 中以蓝色或绿色表示。 |
unstable | 仅post当当前 Pipeline 的运行处于“不稳定”状态时才运行步骤,这通常是由测试失败、代码违规等引起的。这通常在 Web UI 中用黄色表示。 |
unsuccessful | 仅post当当前pipeline块或者stage块的运行没有“成功”状态时才运行步骤。这通常在 Web UI 中表示,具体取决于前面提到的状态(对于阶段,如果构建本身不稳定,则可能会触发)。 |
cleanup | 在评估post所有其他条件后 运行此条件中的步骤,无论管道或阶段的状态如何。 |
示例:
pipeline {
agent any
stages {
stage('Example') {
steps {
echo 'Hello World'}
}
}
post {
always {
echo 'I will always say Hello again!'}
}
}
(2)stages
该部分包含一系列一个或多个stage指令,stages是流水线描述的大部分“工作”所在的位置。建议至少为持续交付过程的每个离散部分(例如构建、测试和部署)stages包含一个stage指令。
示例:
pipeline {
agent any
stages {
stage('Example') {
steps {
echo 'Hello World'}
}
}
}
(3)stage
该stage指令位于该stages部分中,并且应该包含一个steps部分、一个可选agent部分或其他特定于阶段的指令。
示例:
pipeline {
agent any
stages {
stage('Example') {
steps {
echo 'Hello World'}
}
}
}
(4)steps
该部分定义了 要在给定指令中执行steps的一系列一个或多个步骤。
示例:
pipeline {
agent any
stages {
stage('Example') {
steps {
echo 'Hello World'
}
}
}
}
步骤哪里来:
1)首先我们创建一个pipeline的项目,在项目编辑最下角有一个“流水线语法”,点击进去
2)点击“片段生成器”,选择要生成的“步骤”,输入步骤内容,之后就可以点击“生成流水线脚本”按键。这样就能生成step步骤语句语法
(5)Sequential Stages
stages内嵌套stages。
pipeline中的阶段可能有一个stages部分,其中包含要按顺序运行的嵌套阶段列表。请注意,一个阶段必须有一个且只有一个steps、stages、parallel或matrix。
如果stage指令嵌套在parallel ormatrix块本身中,则无法在stage指令中嵌套parallel ormatrix块。然而,parallel ormatrix块中的stage指令可以使用stage的所有其他功能,包括agent, tools, when等。
pipeline {
agent none
stages {
stage('Non-Sequential Stage') {
agent {
label 'for-non-sequential'}
steps {
echo "On Non-Sequential Stage"}
}
stage('Sequential') {
agent {
label 'for-sequential'}
environment {
FOR_SEQUENTIAL = "some-value"}
stages {
stage('In Sequential 1') {
steps {
echo "In Sequential 1"}
}
stage('In Sequential 2') {
steps {
echo "In Sequential 2"}
}
stage('Parallel In Sequential') {
parallel {
stage('In Parallel 1') {
steps {
echo "In Parallel 1"}
}
stage('In Parallel 2') {
steps {
echo "In Parallel 2"}
}
}
}
}
}
}
}