首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SVN post-commit和Jenkins的问题

SVN post-commit和Jenkins的问题
EN

Stack Overflow用户
提问于 2012-07-17 19:13:26
回答 5查看 7.8K关注 0票数 8

我在试着让CI跟Jenkins一起去。到目前为止,我们已经在我们的环境中执行了两个预定的构建,但我们的开发人员希望让CI工作。我遵循了Jenkins Subversion插件维基页面中概述的说明:

https://wiki.jenkins-ci.org/display/JENKINS/Subversion+Plugin

这让我找到了一个可以在命令行执行的脚本,但是当我提交Subversion中的更改(使用TortoiseSVN客户端)时,提交似乎挂起了,而且我没有看到Jenkins收到通知。

下面是我的脚本:

代码语言:javascript
复制
#!/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源已在脚本中。它已经工作了一年多了。

我也更新了文件权限,以防这是问题所在:

代码语言:javascript
复制
[root@Subversion hooks]# ls post-commit -ao
-rwxrwxr-x 1 apache 530 Jul 17 06:27 post-commit
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 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开始。

票数 1
EN

Stack Overflow用户

发布于 2012-07-17 20:40:19

要在Jenkins中启用推送模式,应在作业的配置页中启用轮询SCM构建触发器。它告诉Jenkins,无论何时发生SCM更改,它都应该构建作业。

因为您不需要进行任何轮询(从钩子获取信息),所以可以将该字段保留为空。

票数 5
EN

Stack Overflow用户

发布于 2012-07-17 22:01:59

试着增加你的超时时间-- 2秒就像...太低了。

以下是对我有效的方法:

代码语言:javascript
复制
/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 * * * *

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11521302

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档