我使用管道声明语法,我需要从共享库中的方法返回一个值
pipeline{
String label= new Define.getLabel()
agent (label ${label})
// stages, options ...
}
答案 0 :(得分:3)
这应该有效。我没有使用共享库进行测试,但它的工作方式相同(当然,您必须使用@Library('library-name')_
导入共享库,并且您的脚本应该存储在那里。(我的工作正在进行中。)
我的脚本非常简单。 GetLabel
只会返回"docker"
,但您可以通过条件状态使其更复杂。
我调用方法并将输出保存在labelID
中。因此labelID
包含"docker"
。当我指定要使用的标签时,我会阅读labelID
的内容。
def labelID = getLabel()
pipeline {
agent { node { label labelID } }
stages {
stage('Stage 1') {
steps {
sh 'echo "hallo"'
}
}
}
}
def getLabel(){
return 'docker'
}
此管道已在标签为'docker'
的从属设备上运行。