Jenkinsfile管道在运行时动态环境修改

时间:2018-09-13 12:18:40

标签: environment-variables jenkins-pipeline gitversion

我需要在Jenkins管道中获取GitVersion.exe变量。

GitVersion documentation给出了有关如何执行此操作的提示。本质上叫gitversion /output buildserver

此调用确实将变量添加到当前步骤,并且在步骤完成后将丢失它们。我可以显示在同一蝙蝠执行中组合set命令时执行此调用。第二个set显示变量已从环境中消失。

bat 'nuget install GitVersion.CommandLine -OutputDirectory c:/packages -Version 3.6.5'
bat 'c:/packages/GitVersion.CommandLine.3.6.5/tools/GitVersion.exe /output buildserver && set'
bat 'set'

GitVersion的文档已意识到这一点,并建议使用EnvInject。 安装插件并执行相同的管道不会改变结果。我读到该插件不是用于管道的,因此可能与它有关。

管道支持environment的语法。

按照这种语法,我可以在管道的顶部设置静态变量,如下所示:

environment {
    ASuperVariable = 'MySuperVariable'
}

我需要组合这些调用,以便可以将运行时变量添加到Jenkinsfile pupeline。

environment {
    bat 'gitversion /output buildserver'
}

现在显然上述调用甚至在语法上都不正确。有没有办法标记一个部分,以便所包含的环境更改可用于其他步骤?

编辑: 这仍然没有解决。目前,我需要创建一个批处理脚本并将该工具作为参数传递给它。在批处理中,我可以调用该工具以将其添加到批处理脚本的环境中,并在批处理运行期间使用该工具。如果在所有多行中都保持相同的过程,则可以在Jenkins文件中使用多行批处理。

0 个答案:

没有答案