我想要完成的是以下Jenkins(http://jenkins-ci.org)作业配置:
有一组由{/ p>触发的<project>-master
个工作
我已经通过指定适当的refspec,添加了GitHub webhook等来实现了这一点。这非常简单。
有一组由{/ p>触发的<project>-pr
个工作
我让詹金斯做了前两个。但我发现没有办法从这个列表中做#3项目,因为GitHub插件无法轻易找到推送是否是PR分支。有什么想法可以做到吗?
有一组<project>-branch
个任务由任意推送到任何分支触发。问题是我想要将push推送到master和用于PR的分支。我已经在互联网上查了几天可能的解决方案而且什么都没有,所以任何提示都会受到高度赞赏。
答案 0 :(得分:2)
根据建议设置作业以使用Github PUll Request Builder插件,它只会针对您列出的3个条件触发PR。
越难...... 据我所知,jenkins没有简单的方法可以知道分支是否有拉取请求,因为拉取请求是特定于github的,而jenkins分支检测只是使用git。
但是,根据我的经验,对于第三个选项,我设置了<project>-feature
作业,并将其配置为匹配任何前缀为f/
的分支。这样,如果开发人员希望测试自动执行其分支,但不想打开针对它的pull请求,他们可以创建像f/add_a_thing
那样的分支,它会自动触发推送测试。为此,我将在作业配置中将分支说明符设置为f/*
。
或者,git插件允许对分支说明符使用正则表达式参数。您可以使用正则表达式来专门忽略主分支。但是,忽略pull请求分支的唯一方法是让开发人员使用命名模式(例如pr/add_a_thing
)来识别此分支将有一个拉取请求。