0

我正在使用管道声明性语法,我需要获取从共享库中的方法返回的值

    pipeline{
        String label= new Define.getLabel()
        agent (label ${label})
        // stages, options ...
    }
4

1 回答 1

4

这应该有效。我没有使用共享库进行测试,但它的工作原理相同(当然,您必须导入共享库,@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'

于 2018-04-03T13:38:48.073 回答