我有一个共享库,其中包含一个声明性管道,许多作业都使用它来构建。但是,我希望能够将触发器块从Jenkinsfile传递到共享库,因为一些作业我希望通过Cron触发,其他作业我希望通过SNS触发,其他作业使用上游作业触发。
我有办法做到吗?我试过的一切都失败了
我试过了
#Jenkinsfile
@Library('build') _
buildAmi{
OS = "amazonlinux"
owners = "amazon"
filters = "\"Name=name,Values=amzn-ami-hvm-*-x86_64-gp2\""
template = "linux_build_template.json"
trigger = triggers {
cron('0 H(06-07) * * *')
}
#Shared Lib
pipeline {
$buildArgs.trigger
其失败原因是
Not a valid section definition
我也尝试过只将cron计划传递到共享库中,例如
triggers {
cron("${buildArgs.cron}")
}
但这会产生误差
Method calls on objects not allowed outside "script" blocks
我尝试过各种其他的方法,但似乎声明式风格需要一个内部只有触发器的触发器块。
有人知道有什么方法可以实现我正在努力做的事情吗?
1条答案
按热度按时间x7yiwoj41#
注解代码太多:
我们想把一些预置属性和jenkinsfile属性合并起来,这是一种有效的方法,因为属性方法只能被调用一次。
我们使用了带有触发信息的附加管道参数:
Jenkins档案:
然后在共享库中
这是合并预设和参数的唯一方法,因为属性不能被覆盖。不完全是答案,但我认为是解决它的方法。