Jenkins CI:如何触发SVN提交的构build

什么插件和插件function,我需要设置为了让我的jenkins工作触发构build任何时候代码是致力于一个SVN项目? 我已经安装了标准SVN插件以及SVN标签插件,但没有看到任何允许触发器configuration的新function。

有两种方法可以解决这个问题:

由于易于实施,我首先推荐第一个选项。 一旦你在构build过程中成熟,切换到第二个。

  1. 轮询存储库以查看是否发生了更改。 如果两个提交在相同的轮询间隔内进入,这可能会“跳过”提交。 在这里描述如何操作 ,请注意第四个屏幕快照,在这个屏幕上你根据轮询版本库(使用类似于crontab的configuration)在作业上configuration了“构build触发器”。

  2. configuration你的仓库有一个post-commit钩子,通知Jenkins生成需要启动。 这里说明如何做到这一点 ,在“post-commit hooks”

SVN标签function不是轮询的一部分,它是将源代码的当前“头部”提升到标签以快照构build的一部分。 这允许你将Jenkins buid#32称为SVN标签/标签/ build-32(或类似的东西)。

我做了一个工具使用python与一些bash触发jenkins构build。 基本上你必须从提交后提交svn服务器时收集这两个值:

REPOS =“$ 1”REV =“$ 2”

然后使用“svnlook dirs-changed $ 1 -r $ 2”来获取刚刚提交的path。 然后从那里你可以检查你想build立的库。 想象一下你有几十万个项目。 你不能检查整个存储库?

你可以看看我的脚本从github

我写了这个脚本,因为我只是学习python,现在仍在使用它。 我计划改进它,但是新的项目和事物一直在持续着我。 大家对Python有很好的了解肯定有更好的内置工具。 如果任何人都可以分享,会喜欢拥有它。

你们会推荐GitHub而不是SVN来触发构build? 其实我只是知道SVN,但我想知道为什么这么多人倾向于使用GitHub。

你需要只需要一个插件是颠覆插件。 然后简单地进入jenkins-> job_name->构build触发器部分 – >(i)远程触发构build(即从脚本)身份validation令牌:-Token_name

然后进入svn服务器的hooks目录,然后在fire下面的命令之后: – (a)cp post-commit.tmpl post-commit(b)chmod 777 post-commit(c)chown -R www-data:www-data post-commit (d)vi提交后注意:所有行都应该注释在最后语法的下面添加行 (对于linux用户): – / usr / bin / curl http://用户名:API_token @ localhost:8081 / job / job_name / build ?令牌= TOKEN_NAME

语法(对于windows用户): – C:/ curl_for_win / curl http://用户名:API_token @ localhost:8081 / job / job_name / build?token = Token_name

你可以使用post-commit钩子。

把提交后的钩子脚本放在hooks文件夹中,在你的C盘上创build一个wget_folder ,并把wget.exe文件放在这个文件夹中。 将下面的代码添加到名为post-commit.bat的文件中

 SET REPOS=%1 SET REV=%2 FOR /f "tokens=*" %%a IN ( 'svnlook uuid %REPOS%' ) DO ( SET UUID=%%a ) FOR /f "tokens=*" %%b IN ( 'svnlook changed --revision %REV% %REPOS%' ) DO ( SET POST=%%b ) echo %REPOS% ----- 1>&2 echo %REV% -- 1>&2 echo %UUID% --1>&2 echo %POST% --1>&2 C:\wget_folder\wget ^ --header="Content-Type:text/plain" ^ --post-data="%POST%" ^ --output-document="-" ^ --timeout=2 ^ http://localhost:9090/job/Test/build/%UUID%/notifyCommit?rev=%REV% 

其中Test =作业的名称

echo用于查看该值,并且还可以在结尾处添加exit 2以了解问题以及post-commit挂接脚本是否正在运行。