为了让构建在代码提交后立即触发,您需要有某种方式通知Jenkins。
但是,您可以配置作业定期轮询SCM(在我的店里,我们每5分钟轮询一次Mercurial存储库)以获取新更改并进行构建。
为此,在“构建触发器”部分中,选中“轮询SCM”复选框,并在文本区域中填写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 can poll Subversion repositories for changes, and while this is reasonably efficient, this can only happen up to every once a minute, so you may still have to wait a full minute before Jenkins detects a change.
To reduce this delay, you can set up a post commit hook so the Subversion repository can notify Jenkins whenever a change is made to that repository. To do this, put the following script in your post-commit file (in the $REPOSITORY/hooks directory):
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
(强烈建议阅读完整文档以了解配置信息或获得更强大的脚本。)
svnlook uuid %REPOS%
C:/wget_for_win/wget--header="Content-Type:text/plain;charset=UTF-8" --post-data="svnlook changed --revision %REV% %REPOS%" --output-document="-" --timeout=2 http://localhost:8080/jenkins/subversion/%UUID%/notifyCommit?rev=%REV%在 post-commit.bat 文件中,这个值应该是什么:"C:/wget_for_win/wget"。 而且在全局配置中,我找不到启用远程触发构建的选项。我会再次检查。 - user2077937