当前位置: 首页 > 知识库问答 >
问题:

Jenkins Pipeline:根据参数设置环境变量

汤洋
2023-03-14

我正在尝试根据传递到作业中的参数在Jenkins管道作业中设置环境变量;这样,我可以在需要它的管道的每个阶段使用环境变量。我尝试在环境块中使用Switch语句:

parameters {
    choice(name: 'ENVIRONMENT', choices: 'dev\nst\nprod', description: 'Environment')
}
environment {
  script {
    switch(env.ENVIRONMENT) {
      case 'dev':
        BRANCH = master
        break
      case 'st':
        BRANCH = 2020Q1
        break 
      case 'prod':
        BRANCH = 2019Q4
        break        
    }
  }
}

然而,这并不起作用,该作业试图将等号之前的所有行评估为KEY名称:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 9: "script {
    switch(env.ENVIRONMENT) {
      case 'dev':
        BRANCH" is not a valid identifier and cannot be used for an environment variable. Identifiers must start with a letter or underscore and can contain only letters, numbers or underscores. @ line 9, column 7.
     script {

我该如何让它工作?

共有1个答案

毋宏茂
2023-03-14

实现这一点的方法很少。这是其中之一:

parameters {
   choice(name: 'ENVIRONMENT', choices: 'dev\nst\nprod', description: 'Environment')
}

stages(){
  stage("some stage"){
    steps {
        script{
            switch(env.ENVIRONMENT) {
              case 'dev':
                env.BRANCH = "master"
                break
              case 'st':
                env.BRANCH = "2020Q1"
                break 
              case 'prod':
                env.BRANCH = "2019Q4"
                break        
            }
            withEnv(["BRANCH=${env.BRANCH}"]) {
                ...................................
                ...................................
                ...................................

           }
        }
     }
   }
}
 类似资料:
  • 问题内容: 我有一个项目,需要根据用户选择的选择参数设置环境变量。每个项目都有一个主题项目依赖项。我想让用户选择项目,然后从属性文件中加载主题名称。就像是 如果用户从choice参数中选择,我想自动设置为。最好的方法是什么? 每当添加新项目时,我都不想修改Jenkins作业配置。相反,我想将映射保存在文件中,以便可以在版本控制中使用它。 问题答案: 啊哈,我找到了一个简单的解决方案!使用EnvIn

  • ENV 设置环境变量 格式有两种: ENV <key> <value> ENV <key1>=<value1> <key2>=<value2>... 这个指令很简单,就是设置环境变量而已,无论是后面的其它指令,如 RUN,还是运行时的应用,都可以直接使用这里定义的环境变量。 ENV VERSION=1.0 DEBUG=on \ NAME="Happy Feet" 这个例子中演示了如何换行,以

  • 我有一个基于REST的java web应用程序,使用Java8,MyBatis 3.4.5部署在Wildfly application Server上。在这个应用程序中,我有一个DB jar模块,它管理从/到应用程序/DB的所有查询、连接、对象。我所有其他必须与DB交互的Java代码(控制器、方法、类)都使用这个DB模块。 作为标准的MyBatis实现,我在DB模块中有这些包 my/app/oj/

  • 问题内容: 我在运行show时有一个file.sh:未设置TERM环境变量。 问题答案: 您可以看到它是否真的没有 设置 。运行命令。 如果没有,则可以这样设置:

  • 3.1.1.设置PATH环境变量 Android SDK里有个目录,主要的工具都在里面。我们将会频繁地用到这些工具,因此把你的~/android-sdk/tools/目录加入系统的环境变量PATH会是个好办法,这一来就不需要每次使用它们时都切换目录了。 不同系统设置环境变量的方式各有不同,详见Installing Android SDK页面中的第二步。 (译注:Installing Android

  • 当我加载我的应用程序时,我得到这个: 我正在尝试遵循这个:谷歌视觉文档 我已经运行了命令: 然后在客户端 Libary 上,它说我必须设置一个客户端库?我已经用他所有正确的事情做了这件事,然后它说- 接下来,通过将环境变量GOOGLE_APPLICATION_CREDENTIALS设置为指向在上一步中下载的JSON文件,为应用程序代码提供凭据。 并执行以下操作:< code >设置GOOGLE _