Jenkins Pipeline的用法
程序员文章站
2022-05-08 16:44:11
...
Jenkins Pipeline的用法
一、基本原理
Jenkins Pipeline是一套插件,将持续交付的实现和实施集成到 Jenkins 中。Jenkins Pipeline 提供了一套可扩展的工具,用于将“简单到复杂”的交付流程实现为“持续交付即代码”。
Pipeline 的定义通常被写入到一个文本文件(称为 Jenkinsfile )中,该文件可以被放入项目的源代码控制库中。
1. Pipeline脚本的一个简单例子:在stages{...}中可以有多个stage指定,stage之间可以顺序执行,也可通过parallel并行运行,还可以嵌套stages。
pipeline {
agent any
stages {
stage('Stage1') {
steps {
echo 'first execute stage.'
}
}
stage('parallel execute stage') {
parallel { //并行stage
stage('Stage2.1') {
steps {
echo "parallel 1 start."
}
}
stage('Stage2.2') {
steps {
echo "parallel 2 start."
}
}
}
}
stage('Stage3') {
steps {
echo 'finally execute stage.'
}
}
}
}
运行是视图效果:
二、用到的语法
最近研究pipeline并行stage,实现根据列表变量自动生成多个stage并行的功能。总结几点pipeline语法:
1. checkout代码到某个目录
dir('${dir}') { //dir:文件路径
git branch: 'master', url: '${git_url}' //git_url:远程仓库地址
}
2. 获取参数
参数实现可配置,选取Choice类型参数化:def paramList = params.testsuites.split(',') as List,逗号分隔转成list,实现自动生成多个stage
3. 根据列表自动生成多个stage
def doTest = paramList.collectEntries {
["${it}" : load_test(it)]
}
def load_test(test_name) {
return {
stage("test: ${test_name}") {
withEnv(["local_test_name=${test_name}"]) { // 需要withEnv([]) ,不能stage里shell脚本获取不到参数值
sh label: '', script: '''echo "test1"
echo "Run test: ${local_test_name}"'''
}
}
}
}
4. parallel:并行运行
script {
parallel doTest //并行运行生成的多个stage
}