如何在代码签入后立即触发Jenkins的构建

时间:2014-02-27 01:36:35

标签: svn jenkins

提交代码后,如何在Jenkins中触发构建?

  1. 安装了Jenkins,可以手动触发构建。
  2. 以下是SVN版本的详细信息。

    • TortoiseSVN 1.8.1,Build 24570 - 32 Bit,2013/07/22 18:28:29
    • Subversion 1.8.1,-release
    • apr 1.4.8
    • apr-util 1.5.2
    • serf 1.3.0
    • OpenSSL 1.0.1e 2013年2月11日
    • zlib 1.2.8
  3. Jenkins网址:“localhost:8080 / job / TestProject /”

1 个答案:

答案 0 :(得分:16)

要在代码提交后立即触发构建,您需要有一些通知Jenkins的内容。

但是,您可以将您的工作配置为定期轮询您的SCM(在我的商店,我们每5分钟轮询一次Mercurial存储库)以获取新的更改,并在有新的更改时进行构建。

为此,在构建触发器部分中,选中轮询SCM 复选框,并在textarea中填写cron表达式。对于每5分钟一次的投票,我们使用

H/5 * * * *

请注意,我们过去常常使用

*/5 * * * *

但是用*替换左H允许Jenkins同时避免对所有项目进行轮询(然后每5分钟轮询一次,但不一定是0,5,10,等分钟。

还可以通过远程检查触发器构建并在文本框中指定令牌来远程触发构建。然后,从脚本到相关URL的简单联系将触发构建。

JENKINS_URL/job/JOB_NAME/build?token=TOKEN_NAME

(此选项可能需要一些特定的权限才能设置,或某些特定的全局配置,因为它似乎无法用于OP。)

对于提交后挂钩解决方案,请参阅Jenkins' Subversion Plugin documentation,其中包含以下重要部分:

  

Jenkins可以轮询Subversion存储库以进行更改,虽然这个效率相当高,但每次只能发生一次,所以在Jenkins检测到更改之前,您可能还需要等待一整分钟。

     

要减少此延迟,您可以设置post commit hook,以便Subversion存储库可以在对该存储库进行更改时通知Jenkins。为此,请将以下脚本放在post-commit文件中(在$ REPOSITORY / hooks目录中):

REPOS="$1"
REV="$2"
UUID=`svnlook uuid $REPOS`
/usr/bin/wget \
  --header "Content-Type:text/plain;charset=UTF-8" \
  --post-data "`svnlook changed --revision $REV $REPOS`" \
  --output-document "-" \
  --timeout=2 \
  http://server/subversion/${UUID}/notifyCommit?rev=$REV

(建议阅读完整文档以获取与配置相关的信息或更强大的脚本。)