在将代码提交到SVN项目时,我需要设置哪些插件和插件功能才能使Jenkins作业触发构建?
我已经安装了标准的SVN插件以及SVN标记插件,但是我看不到任何允许触发器配置的新功能。
在将代码提交到SVN项目时,我需要设置哪些插件和插件功能才能使Jenkins作业触发构建?
我已经安装了标准的SVN插件以及SVN标记插件,但是我看不到任何允许触发器配置的新功能。
Answers:
有两种解决方法:
由于它易于实施,因此我最初建议使用第一种方法。一旦您的构建过程成熟,请切换到第二个。
轮询存储库以查看是否发生了更改。如果在同一轮询间隔内有两次提交,则可能“跳过”提交。 在此处说明如何执行此操作,请注意第四个屏幕截图,在该屏幕快照中,您将根据轮询存储库(使用类似crontab的配置)在作业上配置“生成触发器”。
将您的存储库配置为具有提交后挂接,该挂接通知Jenkins构建需要开始。 在此处的“提交后挂钩”部分中,说明如何执行此操作
SVN标记功能不是轮询的一部分,它是将源代码的当前“头”提升为标记以对构建进行快照的一部分。这使您可以将Jenkins buid#32称为SVN标签/ tags / build-32(或类似名称)。
您只需要一个插件,即Subversion插件。
然后,简单地进入Jenkins→job_name→构建触发器部分→(i)远程(即从脚本)触发构建身份验证令牌:Token_name
转到SVN服务器的hooks目录,然后启动以下命令:
cp post-commit.tmpl post-commit
chmod 777 post-commit
chown -R www-data:www-data post-commit
vi post-commit
注意:所有行都应加注解 最后添加以下行
语法(对于Linux用户):
/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
您可以使用提交后挂钩。
将提交后的挂接脚本放入hooks
文件夹中,wget_folder
在C:\驱动器中创建一个,然后将该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
在末尾添加以了解问题以及提交后的钩子脚本是否正在运行。