我已经设置了一个版本控制系统(subversion),开发人员将使用它来提交和更新他们的代码(让我们说它的地址是 https://开头的服务器/ SVN /项目 )。只需提一下,只有经过身份验证的用户才能访问项目的svn。
另一方面,我已经安装了Hudson服务器作为项目的持续集成服务器(项目的地址是 server:8080/job/project
)我想要以下内容:
- 当存在svn提交时,Hudson构建为自动触发。
- 当承诺的代码不构建时,将邮件发送给相应的开发人员(提交代码的人)。 (意思是当用户A提交不构建的代码时,只有用户A才能收到带有通知的电子邮件)
只是提到我已经为Hudson用户设置了基于矩阵的授权,因为我不想对所有人开放。
我看到了一些建议 post-commit
钩子,但直到现在都没有工作。
有人可以建议我在这两个问题上做些什么吗?具体步骤将不胜感激。
根据 “构建软件项目#通过Subversion / CVS中的更改构建”,Hudson需要轮询您的SVN仓库以检测更改并触发构建。
但是,这可以在SVN的每次提交时启动,例如 在这个帖子中。
官方剧本是在 Subversion插件 页。
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/hudson/subversion/${UUID}/notifyCommit?rev=$REV
但是它被指定:
为了这个工作, 您的Hudson必须允许对系统进行匿名读取访问。
如果对您的Hudson的访问控制更具限制性, 您可能需要指定用户名和密码,具体取决于您的身份验证配置方式。
要在SVN中提交时触发构建,您必须(1)将您的hudson作业设置为远程构建,以及(2)创建SVN钩子...
第一部分是相当简单的...使钩子转到/ var / lib / svn //钩子并将post-commit.tmpl重命名为post-commit
在那里你可以做点什么
#!/bin/bash
# Este script comprueba si se han hecho cambios en un directorio concreto,
# y en tal caso lanza una build en Jenkins
REPOS="$1"
REV="$2"
JENKINS_JOB="$3"
JENKINS_USER=admin
JENKINS_PASSWORD=****
JENKINS_HOST=<hostname>
if [ -n $(svnlook dirs-changed $REPOS --revision $REV | fgrep "tags\/") ];then
wget --quiet --auth-no-challenge --no-check-certificate --http-user=$JENKINS_USER --http-password=$JENKINS_PASSWORD http://$JENKINS_HOST/job/$JENKINS_JOB/build?token=TOKEN
fi
exit 0
看看这篇文章 http://blogsyntagma.blogspot.com.ar/2012/04/hook-de-subversion-para-ejecutar-un-job.html (这是西班牙语)
以下是必需的步骤:
- 创建一个SVN用户,Hudson可以使用该用户获得对存储库的只读访问权限
- 配置Hudson在访问存储库时使用此SVN用户
- 创建一个新作业以在指定地址(即特定分支)使用存储库
- 将您的作业配置为每分钟至少轮询一次存储库以进行任何更改
- 配置您的作业以构建所需的内容
- 配置您的作业以发送有关构建失败的电子邮件
我建议通过电子邮件发送所有开发人员,以便他们收到通知说构建不稳定,而不仅仅是罪魁祸首。这不仅提供了更多的可见性,而且还会激发罪魁祸首立即解决问题或以其他方式接受来自其他开发人员的责骂。相信我,这是有效的。