如何在Jenkins的管道脚本中区分部署环境

时间:2018-12-10 16:46:26

标签: 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(视图)

  • dev1_microserviceA(作业/管道)
  • dev1_microserviceB
  • ...
  • dev1_microserviceX \

DEV2

  • dev1_microserviceA
  • dev1_microserviceB
  • ...
  • dev1_microserviceX ...

2 个答案:

答案 0 :(得分:1)

  • 如果每个环境中有一台计算机,则可以使用节点的主机名来命名节点,并使用.graph{ padding: 0; display: block; margin: 0 auto; max-width: 100%;} NODE_NAME块中获取其名称。
  • 如果每个环境中有多台计算机,则可以将node设置为自定义环境变量,并在ACR_TAG块内使用它(在每个节点上管理Jenkins->管理节点->配置( )->节点属性->勾号环境变量)。
  • 如果您动态管理节点,也许最好在共享库中维护一个功能以确定您所在的位置。

答案 1 :(得分:0)

您可以只使用parameters来定义要部署到的环境。我正在为您的用例使用选择参数。我只是将param.TARGET_ENV的值提供给全局库,该库然后称为Ansible。