Jenkins – 声明式流水线示例

我们将以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 – 第二阶段退出

执行时的输出,可以查看控制台输出。



浙ICP备17015664号 浙公网安备 33011002012336号 联系我们 网站地图  
@2019 qikegu.com 版权所有,禁止转载