我需要设置哪些插件和插件功能,才能让我的Jenkins工作在代码提交到SVN项目时触发构建?
我已经安装了标准的SVN插件和SVN标签插件,但是我并没有看到任何新的特性来进行触发配置。
我需要设置哪些插件和插件功能,才能让我的Jenkins工作在代码提交到SVN项目时触发构建?
我已经安装了标准的SVN插件和SVN标签插件,但是我并没有看到任何新的特性来进行触发配置。
这里有两种方法:
我建议一开始采用第一种方法,因为它易于实现。 当您的构建流程变得成熟后,请切换到第二个选项。
轮询存储库以查看是否发生更改。 如果在同一轮询间隔内出现两次提交,则可能会“跳过”提交。 此处描述如何执行此操作,请注意第四个屏幕截图,在作业上配置“基于轮询存储库的构建触发器”(使用类似于crontab的配置)。
配置您的存储库以具有后提交挂钩,该挂钩通知Jenkins需要启动构建。 此处插件的描述,在“后提交钩子”部分
SVN标记功能不是轮询的一部分,而是将当前的“head”源代码推广到标记以快照构建的一部分。 这使您可以将Jenkins构建#32称为SVN标记/tags/build-32(或类似的内容)。
cp post-commit.tmpl post-commit
chmod 777 post-commit
chown -R www-data:www-data post-commit
vi post-commit
注意:所有行都应该被注释 在最后添加以下行
/usr/bin/curl http://username:API_token@localhost:8081/job/job_name/build?token=Token_name
语法(适用于Windows用户):
C:/curl_for_win/curl http://username:API_token@localhost:8081/job/job_name/build?token=Token_name
REPOS="$1"
REV="$2"
然后你可以使用 "svnlook dirs-changed $1 -r $2" 命令获取刚刚提交的路径。从中,你可以检查想要构建的存储库。想象一下,如果你有成千上万个项目,你不能检查整个存储库,对吧?
你可以从 我的GitHub脚本 进行检出。
您可以使用后提交钩子。
将后提交钩子脚本放置在hooks
文件夹中,在C:\驱动器中创建一个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
以了解问题以及后提交钩子脚本是否正在运行。