首页 > 解决方案 > 如何区分 Jenkins 的流水线脚本中的部署环境

问题描述

我使用 Jenkins 将微服务部署到不同的环境(Dev1、dev2、QA ... Prod)

我对每个环境都有一个几乎相同的管道脚本,环境名称嵌入在作业名称中,因此我们可以执行类似的操作来创建特定于环境的代码和变量,从而将更多代码重构为公共库

    if (env.JOB_BASE_NAME.startsWith('dev1')) {
        env.ACR_TAG='dev1'
        // other settings... 
    }
    else if (env.JOB_BASE_NAME.startsWith('dev2')) {
        env.ACR_TAG='dev2'
    }
    else if (env.JOB_BASE_NAME.startsWith('qa1')) {
        env.ACR_TAG='qa1'
    } 

有没有更好的方法来实现这一点,而不在作业名称中嵌入环境名称?我不能使用$env.BRANCH_NAME方法

这是我的设置的样子:

DEV1(视图)

DEV2

标签: jenkins

解决方案


  • 如果每个环境有一台机器,您可以使用它们的主机名命名您的节点,并使用它们在一个块NODE_NAME中获取它们的名称。node
  • 如果每个环境有多台机器,您可以设置ACR_TAG为自定义环境变量并在块内使用它node(管理 Jenkins -> 管理节点 -> 配置(在每个节点上)-> 节点属性 -> 勾选环境变量)。
  • 如果您动态管理节点,最好在共享库中维护一个函数以确定您的位置。

推荐阅读