欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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.'
            }
        }
    }
}

运行是视图效果:

Jenkins Pipeline的用法

 

二、用到的语法

最近研究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

Jenkins Pipeline的用法

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
}