代码之家  ›  专栏  ›  技术社区  ›  Johannes

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

  •  0
  • Johannes  · 技术社区  · 7 年前

    GitVersion.exe 我的Jenkins管道中的变量。

    documentation 给出了一个如何做到这一点的提示。本质上是呼叫 gitversion /output buildserver .

    此调用会将变量添加到当前步骤中,一旦步骤完成,这些变量就会丢失。我可以显示在组合 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文件中的多行批处理可能是一个解决方案。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Joerg S    7 年前

    不确定是否可以使用脚本化管道或至少在声明式内部使用脚本块。这样做很容易:

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

    或者在调用windows cmd脚本时:

    node('win') {
        withEnv(['ASuperVariable=MySuperVariable']) {
            bat 'echo %ASuperVariable%'
        }
    }
    
    推荐文章