如何从声明语法中获取共享库中的方法返回的值?

时间:2018-04-03 11:18:15

标签: jenkins jenkins-pipeline jenkins-declarative-pipeline jenkins-shared-libraries

我使用管道声明语法,我需要从共享库中的方法返回一个值

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

1 个答案:

答案 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'的从属设备上运行。