如何使用环境变量配置2个jenkins管道触发器

时间:2017-09-21 02:24:04

标签: jenkins continuous-integration jenkins-plugins jenkins-pipeline devops

我必须将参数传递给jenkins pipelineTrigger中的timeTrigger函数,但是它没有使用该参数。我必须安排2个版本,一个用于Dev每8个小时,其他用于每12个小时进行一次。

  • 问题1:我可以通过这种方式触发2个构建吗?
  • 问题2:如何传递参数来指定环境?

参见下面的代码

environmentParam = ['dev', 'qa', 'stg']

originParam = ['Automatic', 'Manual']

if (env.BRANCH_NAME == "master") {
    properties([
            [$class              : 'ParametersDefinitionProperty',
             parameterDefinitions:
                     [
                             [$class     : 'ChoiceParameterDefinition',
                              choices    : environmentParam.join('\n'),
                              description: 'Environment to run the Integration tests',
                              name       : 'environment'
                             ],
                             [$class     : 'ChoiceParameterDefinition',
                              choices    : originParam.join('\n'),
                              description: 'The execution of this job was Automatic or Manual',
                              name       : 'origin'
                             ]
                     ]
            ],
            pipelineTriggers(
                    [
                            [
                                    $class: 'TimerTrigger', spec: 'H */12 * * *', environment: 'stg'
                            ],
                             [
                                    $class: 'TimerTrigger', spec: 'H */8 * * *', environment: 'dev'
                            ]
                    ]
            ),
            disableConcurrentBuilds()
    ])
}

上面的代码没有占用环境,它只触发pipeTriggers中的第二个条目,而不是两者。 : - (

2 个答案:

答案 0 :(得分:2)

  • 回答问题1:不,你现在不能这样做。

执行管道脚本时,properties将设置为jenkins作业(config.xml)。因此,如果正常的jenkins作业不支持多个时间触发器,则您的脚本也不会按预期工作。

请执行它并检查jenkins作业配置和config.xml以了解结果。

<强>建议

在另一个逻辑中更改您的解决方案(如果它仍然是8&amp; 12小时)

  • 触发您的工作每4小时运行一次
  • 保留两个选择参数。
  • 尝试在steps中进行一些逻辑检查,以便在不同的时间运行不同的阶段。

答案 1 :(得分:1)

我认为如果您创建两个或三个构建计划而不是一个构建计划,那么您将有更好的时间。

如果你创建了两个,那么将有一个用于开发,一个用于登台,并且每个都有自己的触发器并进行适当的部署。

如果您有三个,那么会有一个(让他们称之为&#34;部署&#34;构建计划)进行部署并且采用TARGET_ENVIRONMENT参数或类似的(使用值dev或stg) 。另外两个会有触发器,他们会调用部署构建计划来完成实际工作。您可以从Jenkins文件中调用另一个构建计划,如下所示:

build job: 'deployment', parameters: [string(name: 'TARGET_ENVIRONMENT', value: 'dev')]