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



我必须将参数传递到jenkins pipeLinetigr中的timetrigger函数,但它没有采用该参数。我必须安排2个构建,一个是每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()
    ])
}

上面的代码没有占据环境,它仅在PipeLinetriggers中触发第二个条目,而不是两者兼而有之。: - (

  • 问题1:不,您现在不能做。

执行管道脚本时,properties将设置为Jenkins作业(config.xml)。因此,如果普通詹金斯(Jenkins)作业中不支持多个时间触发器,那么您的脚本也将无法正常工作。

请执行它并检查Jenkins作业Configuraion和config.xml以了解结果。

建议

在另一种逻辑中更改解决方案(如果仍然是8& 12小时)

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

我认为,如果您创建两个或三个构建计划而不是一个。

,您将有更好的时间。

如果您创建了两个,则将有一个用于开发人员,一个登台,他们每个人都有自己的触发器并进行适当的部署。

如果您有三个,则会有一个(我们称其为"部署"构建计划)确实部署了,并且采用了target_environment参数或类似(带值DEV或STG)。另外两个将有触发器,他们每个人都会调用部署构建计划来完成实际工作。您可以从这样的詹金斯菲尔(Jenkinsfile)调用另一个构建计划:

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

最新更新