当前位置: 首页 > 面试题库 >

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

康泽宇
2023-03-14
问题内容

我的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?


问题答案:

您可以使用标记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在阶段之间传播值,但是有可能做其他解决方案。



 类似资料:
  • 问题内容: 我正在尝试将旧样式的基于项目的工作流转换为基于Jenkins的管道。在浏览文档时,我发现有两种不同的语法分别命名为和。例如最近(2016年底)发布的Jenkins网络语法。尽管有一个新的语法版本,Jenkins仍然也支持脚本语法。 现在,我不确定这两种类型的哪种情况最合适。语法将很快被弃用吗?詹金斯管道的未来会是这样吗? 任何可以分享有关这两种语法类型的想法的人。 问题答案: 最初创建

  • 我已经在Jenkins上创建了一个基本的声明性管道。当我运行构建时,它会抛出以下错误 Jenkins服务器使用最新版本的默认插件设置为默认。Jenkinsfile如下所示 当Jenkins读取Jenkinsfile时,看起来块失败了,这在Jenkinsfile看起来很混乱。

  • 我有以下管道: 不幸的是,这引发了: groovy.lang.MissingPropertyException:没有这样的属性:org.kohsuke.groovy上的类groovylang.Binding.getVariable(Binding.java:63)的master:org.jenkinsi.plugins.scriptsecurity.sandbox.groovy-SandboxIn

  • 我有一个Jenkins声明性管道,我一直在Jenkins master上运行,它工作得很好。但是,现在我已经开始尝试在从属节点上执行此操作,管道中调用的groovy脚本无法访问工作区中的文件。 我的文件看起来像这样。。。 我可以在从机上看到它正在创建工作区,从git执行签出,并正确执行脚本。但是,如果脚本中的某些内容尝试与工作区中的文件交互,则会失败。 如果我有像这样简单的东西... ...它说找

  • 问题内容: 我想在Jenkins声明式管道的不同阶段使用不同的JDK版本。在第一阶段中,我正在使用Java8。在第二阶段中,我正在使用Java6。如何在Jenkins的声明性管道中选择多个JDK版本? 问题答案: 您可以为每个阶段添加一个工具部分。

  • 我写了一个Jenkins管道,相关部分如下所示: 和我的DockerFile: