0

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

GitVersion文档给出了如何做到这一点的提示。本质上调用gitversion /output buildserver.

此调用确实将变量添加到当前步骤,并且一旦步骤完成,它们就会丢失。set我可以显示在同一 bat 执行中组合命令时执行此调用。第二个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 文件中的多行批处理可能是一种解决方案。

4

1 回答 1

0

不确定您是否能够使用脚本化管道或至少在声明性中使用脚本块。这样做很容易:

withEnv(['ASuperVariable=MySuperVariable']) {
    echo env.ASuperVariable
}

或者在调用 windows cmd 脚本时:

node('win') {
    withEnv(['ASuperVariable=MySuperVariable']) {
        bat 'echo %ASuperVariable%'
    }
}
于 2018-09-14T21:12:17.423 回答