我最近开始使用Jenkins管道中的Jenkins共享库 . 我创建了一个“func.groov”类,并将其放在“src / org / prj / func.groovy”下:
package org.prj
import jenkins.model.
class func implements Serializable {
def steps
func(steps) {
this.steps = steps
}
def sh(args) {
steps.sh "echo ${args}"
}
def setLBL(CurrentNodeName,newLabelName){
jenkins.model.Jenkins.instance.slaves.each{ slave ->
if (slave.getNodeName() == CurrentNodeName){
slave.setLabelString(newLabelName)
}
}
}
Jenkinsfile(脚本)看起来像:
@Library('prj') import org.prj.func
def utils = new func(steps)
node(lbl)
{
stage("A"){
Build_node_lbl = env.NODE_NAME+System.currentTimeMillis()
utils.setLBL(env.NODE_NAME,Build_node_lbl)
}
}
所以目前它有效 . 我的问题是如何在func.groovy共享库中创建一个完整的阶段(如“A”)作为函数,例如:
-
GIT结帐步骤
-
sh编译步骤
-
Artifactory部署步骤
我实际上希望用Jenkins管道和分片库创建一个“构建块”(在我的例子中为“Build”) .
1 回答
1.使用类实例化
您可以像在Java中一样创建类 . 然后在
Jenkinsfile
中实例化该类并调用其函数 .src/org/prj/MyPipeline.groovy:
Jenkinsfile:
2.使用静态功能
您也可以使用静态上下文,而无需实例化 . 但是,这需要将调用者上下文移交给管道:
src/org/prj/MyPipeline.groovy:
Jenkinsfile: