我们将以Jenkins – 创建流水线任务章节中,创建的流水线任务为基础,演示一个声明式流水线示例。
Jenkinsfile
我将创建一个脚本文件Jenkinsfile
,然后将这个文件放到git存储库中。在构建任务中的流水线配置中,设置git库及Jenkinsfile
路径。如下图所示:
Jenkinsfile
pipeline {
agent any
stages {
stage('One') {
steps {
echo 'Hi, welcome to qikegu.com'
}
}
stage('Two') {
steps {
input('Do you want to proceed?')
}
}
stage('Three') {
when {
not {
branch "master"
}
}
steps {
echo "Hello"
}
}
stage('Four') {
parallel {
stage('Unit Test') {
steps {
echo "Running the unit test..."
}
}
stage('Integration test') {
agent {
docker {
reuseNode true
image 'ubuntu'
}
}
steps {
echo "Running the integration test..."
}
}
}
}
}
}
代码说明:
- 声明式流水线是通过在
pipeline
块中编写代码来定义的。在块中定义了一个标记为any
的代理,这意味着流水线可在任何执行程序上运行。 - 创建了四个阶段,每个阶段执行一个简单的任务。
- 第一阶段执行一个简单的echo命令,该命令在
steps
块中指定。 - 第二阶段执行一个输入指令。这个指令会显示一条提示,让用户选择继续还是退出。
- 第三阶段运行一个“when”指令。该指令可以让你设置条件来执行步骤,它必须在阶段级别上定义。此处,由于是master分支,不满足条件,所以执行下一个步骤(
echo "Hello"
) - 第四阶段运行一个并行指令。这个指令允许你并行地运行嵌套阶段。这里,并行地运行两个嵌套的阶段,即“单元测试”和“集成测试”。
- 在集成测试阶段,定义了一个docker代理,这个docker代理将执行“集成测试”阶段。
- reuseNode是一个布尔值,当返回true时,docker容器将在管道顶层指定的代理上运行,在这种情况下,顶层指定的代理是“any”,这意味着容器将在任何可用节点上执行。默认情况下,这个布尔值返回false。
执行流水线
点击Build Now
执行流水线任务。
在执行到第二个阶段时,会提示继续还是退出。
我们尝试执行2次,第一次执行完全部阶段,第二次中间退出。
执行结果如下图所示:
- #1 – 执行完全部阶段
- #2 – 第二阶段退出
执行时的输出,可以查看控制台输出。