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

时间:2011-10-21 14:59:34

标签: continuous-integration hudson jenkins sonarqube

我工作的小组已经对Jenkins进行了标准化的持续集成构建。代码签入触发标准构建,Cobertura分析并发布到Artifactory SNAPSHOT仓库。我刚刚在主构建文件中添加了一个新目标,它将启动Sonar运行,但我不希望每次签入都运行。

有没有办法在Jenkins中安排每晚构建特定的构建目标? Jenkins显然促进了预定的构建,但它每次都会运行项目的常规构建。我希望能够安排Sonar构建目标每晚运行。

当然,我可以创建一个单独的Jenkins项目来按计划运行Sonar目标,但是如果可以的话,我试图避免这样做。我们的Jenkins服务器已经有几百个版本;为了安排夜间构建而加倍,这是不可取的。我找了一个可能有助于此的Jenkins插件,但我找不到任何东西。有什么建议吗?

2 个答案:

答案 0 :(得分:7)

如果你可以使用cron或其他一些调度工具触发构建,那么这是一种方法:

  • 制作构建parameterized,并使用构建文件中的参数来决定是否应该运行Sonar构建目标。
  • 通过HTTP POST远程触发构建:将参数值作为表单添加到http://[jenkins-host]/jobs/[jobname]/buildWithParameters。根据您的Jenkins版本和配置,您可能需要添加Authentication Token并将其包含在您的网址中。
  • 使用用户名和密码验证您的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 :(得分:3)

我也在寻找解决方案。我当前的解决方案是在常规构建中创建2个触发器,一个是夜间构建,另一个是Polling SCM

在声纳插件配置中,它可以跳过由SCM更改触发的构建。因此,只有每晚构建才会开始进行声纳分析。

我现在没有机会测试它,但我认为这样可行。

2011年12月19日更新 如果将声纳分析作为独立构建步骤调用,则上述解决方案不起作用。要使声纳分析有条件地运行,您可以使用以下2个插件:

  1. 条件BuildStep插件 - 这允许声纳分析有条件地运行
  2. Jenkins Environment Injector插件 - 这允许您注入变量以指示如何触发构建。