如何基于SVN repo上更新的特定文件触发Jenkins作业上的构建?
一般来说,我对詹金斯和CI都是新手 我们当前的SVN设置是由一个包含各种项目的大型存储库组成的,存储在子目录中,我们希望在每个项目的特定文件提交给SVN repo时自动开始构建(并在将来进行测试) 我目前在詹金斯的工作设置/工作流程是这样的如何基于SVN repo上更新的特定文件触发Jenkins作业上的构建?,svn,jenkins,continuous-integration,Svn,Jenkins,Continuous Integration,一般来说,我对詹金斯和CI都是新手 我们当前的SVN设置是由一个包含各种项目的大型存储库组成的,存储在子目录中,我们希望在每个项目的特定文件提交给SVN repo时自动开始构建(并在将来进行测试) 我目前在詹金斯的工作设置/工作流程是这样的 一个每分钟轮询SVN并更新本地源副本的主作业 N个作业(每个项目一个作业),使用FSTrigger plugin每分钟轮询本地源副本,查看特定文件中的更改(每个项目明显不同),如果发现更改,则触发特定项目的生成 这一切都正常工作,但从提交给SVN的那一刻
- 一个每分钟轮询SVN并更新本地源副本的主作业
- N个作业(每个项目一个作业),使用FSTrigger plugin每分钟轮询本地源副本,查看特定文件中的更改(每个项目明显不同),如果发现更改,则触发特定项目的生成
如果我的触发条件是每个项目都有一个特定的文件提交(更新)到SVN repo,那么有没有办法让第一个作业根据刚刚更新的文件“调用/触发”其他作业?你想和FSTrigger插件分手吗。正如你提到的,投票很糟糕 您希望在提交后钩子中有一些逻辑,可以查看在提交中更改的路径,并发出启动相应构建的请求 我不再使用jenkins或svn,所以我无法真正测试。比如:
svnlook changed-t“$TXN”$REPOS
应该可以让您更改路径
然后向jenkins发出请求,根据在svnlook
输出中找到的路径构建作业:
curl——用户$JENKINS\u用户:$JENKINS\u API\u令牌http://jenkins/job/build-name/build
OP中的注意事项:这是我在post-commit钩子中实现它的方式:
REPOS="$1"
REV="$2"
svnlook changed --revision $REV $REPOS |
#logic to filter the trigger file and to create the job name from it |
while read -r JOBNAME ; do
/usr/bin/wget \
--output-document "-" \
--timeout=30 \
--tries=1 \
http://JENKINS_SERVER/job/$JOBNAME/build
done
它工作得很好