我在试着让CI跟Jenkins一起去。到目前为止,我们已经在我们的环境中执行了两个预定的构建,但我们的开发人员希望让CI工作。我遵循了Jenkins Subversion插件维基页面中概述的说明:
https://wiki.jenkins-ci.org/display/JENKINS/Subversion+Plugin
这让我找到了一个可以在命令行执行的脚本,但是当我提交Subversion中的更改(使用TortoiseSVN客户端)时,提交似乎挂起了,而且我没有看到Jenkins收到通知。
下面是我的脚本:
#!/bin/sh
REPOS="$1"
REV="$2"
UUID=`svnlook uuid $REPOS`
XSLT_FILE=/var/www/svn/codelog.xslt
RSS_FILE=/var/www/html/code_all.rss
MAX_RESULTS=40
/usr/bin/wget \
--auth-no-challenge \
--no-check-certificate \
--header "Content-Type:text/plain;charset=UTF-8" \
--post-data "`svnlook changed --revision $REV $REPOS`" \
--output-document "-" \
--timeout=2 \
https://192.168.100.16/subversion/${UUID}/notifyCommit?rev=$REV
svn log "file://$REPOS" --limit "$MAX_RESULTS" -v --xml | xsltproc "$XSLT_FILE" - > "$RSS_FILE"RSS源已在脚本中。它已经工作了一年多了。
我也更新了文件权限,以防这是问题所在:
[root@Subversion hooks]# ls post-commit -ao
-rwxrwxr-x 1 apache 530 Jul 17 06:27 post-commit发布于 2012-07-17 23:11:48
我从来不喜欢SVN插件页面的编写方式。读起来很简单,你需要在SVN中设置Post Commit Hook才能正常工作。你没有!
我们的Jenkins box上有大约10个构建。它们都链接到SVN存储库,并且都是由SVN存储库中的更改触发的。它们都不依赖于必须在SVN中使用Post Commit Hook。
为此,我们将构建配置为按计划简单地“轮询SCM”。“提交”构建使用"*/5 ** *“计划。它每5分钟轮询一次。我们的“每日”构建使用"1 1** *“的时间表,因此如果有任何更改,构建将在凌晨1:01开始。
发布于 2012-07-17 20:40:19
要在Jenkins中启用推送模式,应在作业的配置页中启用轮询SCM构建触发器。它告诉Jenkins,无论何时发生SCM更改,它都应该构建作业。
因为您不需要进行任何轮询(从钩子获取信息),所以可以将该字段保留为空。
发布于 2012-07-17 22:01:59
试着增加你的超时时间-- 2秒就像...太低了。
以下是对我有效的方法:
/usr/bin/wget --http-user=jenkins \
--http-passwd=passwordGoesHere \
--header "Content-Type:text/plain;charset=UTF-8" \
--post-data "`svnlook changed --revision $REV $REPOS`" \
--output-document "/var/log/svn/svn-notify-commit-post" \
--timeout=10 \
--read-timeout=10 \
--tries=2 \
"http://jenkins:8082/jenkins/subversion/${UUID}/notifyCommit?rev=$REV" \
>> /var/log/svn/svn-notify-commit-post.log 2>&1(确保您有一个属于适当用户的/var/log/svn目录)。
另外,启用SCM轮询并设置一个cron规则,如*/30 * * * *。
https://stackoverflow.com/questions/11521302
复制相似问题