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

如何在Jenkins的管道脚本中区分部署环境,jenkins,Jenkins,我使用Jenkins将微服务部署到不同的环境Dev1、dev2、QA。。。刺激 对于每个环境,我都有一个几乎相同的管道脚本,作业名称中嵌入了环境名称,因此我们可以这样做来创建特定于环境的代码和变量,从而将更多的代码重构到公共库中 if (env.JOB_BASE_NAME.startsWith('dev1')) { env.ACR_TAG='dev1' // other settings... } else if (env.JOB_BAS

我使用Jenkins将微服务部署到不同的环境Dev1、dev2、QA。。。刺激

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

    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名称?我不能使用这种方法

以下是我的设置的外观:

DEV1视图

dev1\u微服务作业/管道 dev1_微服务B ... dev1_微服务\ DEV2

微服务 dev1_微服务B ... dev1_微服务 ... 您可以使用定义部署到哪个环境。我使用的是一个选择参数,正好适合您的用例。我只是将param.TARGET_ENV值提供给一个全局库,然后全局库调用Ansible

如果每个环境有一台计算机,则可以使用节点的主机名命名节点,并使用节点名称在节点块中获取节点名称。 如果每个环境有多台计算机,则可以将ACR_标记设置为自定义环境变量,并在节点块内使用它,还可以管理Jenkins->管理节点->在每个节点上配置->节点属性->勾选环境变量。 如果您动态地管理节点,那么最好在共享库中维护一个函数来确定您的位置。
请原谅这个新手问题-当一个作业有一个参数时,我可以选择使用参数进行构建,但在运行它时需要进入pram。这能以某种方式实现自动化吗?您希望如何实现自动化?是否要从另一个作业触发该作业?我的意思是,当我为该作业运行构建时,我不想输入参数。我不希望这部分输入环境名称是一个手动步骤。。。有道理吗?是的,我也想连锁工作我想如果我在同一个节点上构建多个环境,这是行不通的,对吗?哦,我没有想到这一点:所有这些背后的想法基本上是放置环境变量,因此,对于在同一节点上构建的多个环境,例如,可以在Dockerfile中插入环境变量。或者,如果您的环境只是同一台机器上的文件夹,您可以在每个文件夹中放置一个文件,告诉管道这是什么环境,依此类推。