pipeline 共享库
简介
jenkins 共享库就是把一些公共的方法类定义在同一的一个仓库中,供给所有的pipeline 的项目使用,实际采用的就是groovy 的语法创建的
共享库结构
共享库中的类的编写示例src/org/*/*.groovy
vi tools.groovy
package org.foo //必备格式,类似于java 的一种目录格式的包路径引用 //定义一个颜色输出的方法,供所有jenkinsfile 调用 def PrintMes(value,color){ colors = ['red' : "\033[40;31m >>>>>>>>>>>${value}<<<<<<<<<<< \033[0m", 'blue' : "\033[47;34m ${value} \033[0m", 'green' : "^[[1;32m>>>>>>>>>>${value}>>>>>>>>>>^[[m", 'green1' : "\033[40;32m >>>>>>>>>>>${value}<<<<<<<<<<< \033[0m" ] ansiColor('xterm') { println(colors[color]) } }
//此文件就是一个类,里面可以定义好多个方法不止上面一个
共享库中变量的编写vars/*.grooy
vi echo.groovy
def hello(){
prinln("hello world")
}
jenkins配置共享库调用
Jenkins>>Manage Jenkins>>Config System 找到以下配置区域进行配置
jenkinsfile 调用共享库中的类和变量
#!groovy @Library('jenkinsShareLibrary') _ //引入共享库 def Tools = new org.pub.tools() //共享库中的类tools 引入
pipeline {
stages{
steps{
script{ //注意引入的共享库类必须在script{}里面使用,不能单独使用
Tools.PrintMes("out put message","green") //使用里面的方法PrintMes() 进行颜色输出
echo() //对于共享库中vars目录下的脚本文件,直接使用就可以执行里面定义的语法。
}
}
}
}
共享库中方法中的变量
如果共享库中方法中有许多变量需要在引用方法的时候传入相应参数,为了方便可以在共享库中变量使用env.xxx 形似,所谓env就是全局变量可以引入jenkins 中的构建参数,例如共享库中使用了env.name ,那么jenkins参数构建的时候定义一个name 的参数即可。
另一种避免直接传入参数的方法是通过配置文件方式。在各个项目中引入一个yaml 文件,里面以key:value 形式定义一些构建发版时需要的变量,共享库中的var 目录下面定义一个函数去读取此文件,然后再共享库的公共类方法中引用此yaml 中的变量参数。