在Jenkins中如何安排特定的构建目标?

8
我所在的团队已将Jenkins作为持续集成构建的标准工具。每次代码提交都会触发标准构建、Cobertura分析并发布到Artifactory快照仓库。我刚刚完成了在主构建文件中添加一个新目标,这个目标将启动Sonar分析,但我不希望它在每次提交时都运行。
有没有一种方法来安排在Jenkins中定期运行特定构建目标?显然,Jenkins可以方便地安排定时构建,但它会每次运行项目的常规构建。我想能够安排Sonar构建目标每晚自动运行。
当然,我可以创建一个单独的Jenkins项目,只是为了按计划运行Sonar目标,但我尽可能想避免这样做。我们的Jenkins服务器已经有几百个构建项目了;为了安排每晚自动构建而使其翻倍并不是很理想。我找过Jenkins插件,但没有找到任何有助于实现这一目的的插件。你有什么建议吗?
2个回答

7

如果您可以使用或其他调度工具来触发构建,则可以采用以下方法之一:

  • 使构建过程参数化, 并在构建文件中使用参数来决定是否运行Sonar构建目标。
  • 通过HTTP POST远程触发构建:将参数值作为表单POST到http://[jenkins-host]/jobs/[jobname]/buildWithParameters。根据您的Jenkins版本和配置,您可能需要添加身份验证令牌并将其包含在您的URL中。
  • 使用用户名和密码进行POST认证。

    wget --auth-no-challenge --http-user=USERNAME --http-password=PASSWORD "https://[jenkins-host]/job/[jobname]/buildWithParameters?token=<token defined in job configuration>&<param>=<value>&<param2>=<value2>"


+1 我也没有看到更好的方法。如果有更好的解决方案,我也很感兴趣。 - Peter Schuetze

3
我也在寻找解决方案。我目前考虑的解决方案是在常规构建中创建两个触发器,一个是夜间构建,另一个是轮询SCM。
在Sonar插件配置中,有选项可以跳过由SCM更改触发的构建。因此,只有夜间构建才会启动Sonar分析。
我还没有测试过,但我认为这个方法会起作用。
更新于2011年12月19日 如果将Sonar分析作为独立的构建步骤调用,则上述解决方案无效。要使Sonar分析有条件地运行,您可以使用以下两个插件:
1.条件构建步骤插件-允许有条件地运行Sonar分析。 2.Jenkins环境注入器插件-允许您注入变量以指示如何触发构建。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接