一尘不染

Jenkins声明性管道:如何注入属性

jenkins

我的Jenkins 2.19.4使用管道:声明式代理程序API 1.0.1。如果您无法定义变量来分配读取的属性,那么如何使用readProperties?

例如,要捕获SVN版本号,我目前以脚本样式使用以下代码捕获它:




    echo "SVN_REVISION=\$(svn info ${svnUrl}/projects | \
    grep Revision | \
    sed 's/Revision: //g')" > svnrev.txt


def svnProp = readProperties file: 'svnrev.txt'

然后我可以使用:

${svnProp['SVN_REVISION']}

由于以声明式定义svnProp是不合法的,因此如何使用readProperties?


阅读 229

收藏
2020-07-25

共1个答案

一尘不染

您可以使用标记script内的步骤steps来运行任意管道代码。

所以符合以下内容:

pipeline {
    agent any
    stages {
        stage('A') {
            steps {
                writeFile file: 'props.txt', text: 'foo=bar'
                script {
                    def props = readProperties file:'props.txt';
                    env['foo'] = props['foo'];
                }
            }
        }
        stage('B') {
            steps {
                echo env.foo
            }
        }
    }
}

在这里,我正在使用env在阶段之间传播值,但是有可能做其他解决方案。

2020-07-25