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