我有Jenkins 2.19.4 with Pipeline:Declarative Agent 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']}
由于在声明式样式中def svnProp不合法,readProperties如何使用?
答案 0 :(得分:10)
您可以使用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在各阶段之间传播值,但也可以做其他解决方案。
答案 1 :(得分:1)
要定义可用于所有阶段的常规变量,请在:13:24: warning: multi-character character constant [-Wmultichar]
中将值定义为:
props.txt
并将脚本和声明性Jenkins管道混合为:
version=1.0
fix=alfa
答案 2 :(得分:0)
@ jon-s解决方案需要授予脚本批准,因为它正在设置环境变量。在同一阶段运行时不需要这样做。
pipeline {
agent any
stages {
stage('A') {
steps {
writeFile file: 'props.txt', text: 'foo=bar'
script {
def props = readProperties file:'props.txt';
}
sh "echo $props['foo']"
}
}
}
}