如何在Jenkins流水线中编写环境变量

3

如何在Jenkins流水线中使用writeFile写出环境变量?

虽然这似乎是一个简单的任务,但我无法找到任何关于如何让它工作的文档。

我尝试了$VAR${VAR}${env.VAR},但都没有效果...?

1个回答

7
在声明式流水线中(使用脚本块的writeFile),代码如下:
pipeline {
    agent any

    environment {
        SENTENCE = 'Hello World\n'
    }

    stages {
        stage('Write') {
            steps {
                script {
                    writeFile file: 'script.txt', text: env.SENTENCE
                }
            }
        }
        
        stage('Verify') {
            steps {
                sh 'cat script.txt'
            }
        }
    }
}

输出:

...
[Pipeline] { (Verify)
[Pipeline] sh
[test] Running shell script
+ cat script.txt
Hello World
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

如果你想避免使用Groovy,这个方法也可以实现:

writeFile file: 'script.txt', text: "${SENTENCE}"

要将您的环境变量与文本组合起来,可以执行以下操作:

...
environment {
    SENTENCE = 'Hello World'
}
...

writeFile file: 'script.txt', text: env.SENTENCE + ' is my newest sentence!\n'

我该如何将变量与文字文本组合起来? - F.P
@FlorianPeschka 已更新答案。 - lvthillo
我不确定我们是否应该在这里讨论,但是我现在在这一行遇到了一个空指针异常:https://github.com/jenkinsci/jenkins/blob/stable-2.89/core/src/main/java/hudson/FilePath.java#L1923 - F.P
@FlorianPeschka,你能分享一下你的流程(或者失败的部分)吗?同时请确认你正在使用最新版本的插件。 - lvthillo
看起来 env.GIT_COMMIT(我想要写的)是 null。虽然我怀疑这可能是我的流水线中的另一个问题。 - F.P
1
GIT_COMMIT环境变量仅在使用git插件时设置。但对于流水线,这种行为有些不同。您确实必须按照此处所述进行定义:https://dev59.com/b6Xja4cB1Zd3GeqPPVFa - lvthillo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接