如何使用SVN提交后的钩子触发器jenkins构建?

时间:2019-09-23 09:02:38

标签: jenkins svn post-commit-hook

主要目的是我想将一些文件提交到SVN存储库并触发jenkins自动构建一些测试。我要使用的方法是提交后挂钩。

我使用TortoiseSVN,并创建一个存储库进行测试。 我将post-commit.tmpl更改为post-commit.bat,它位于D:\ Repository \ hooks文件夹中。

以下是post-commit.bat中的内容:(Windows 10)

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
)

D:/Wget/wget ^
    --header="Content-Type:text/plain;charset=UTF-8" ^
    --post-data="%POST%" ^
    --output-document="-" ^
    --timeout=2 ^
    http://localhost:8080/jenkins/subversion/%UUID%/notifyCommit?rev=%REV%

错误消息是:

post-commit hook failed (exit code 8)with output:
--2019-09-23 13:50:53-- 
http://localhost:8080/"realUUID"/notifyCommit?rev=7
Resolving localhost(localhost)... ::1, 127.0.0.1
Connecting to localhost(localhost)|::1|:8080... connected.
HTTP request sent, awaiting response... 404 Not Found
2019-09-23 13:50:53 ERROR 404: Not Found

我所做的是: 1.将jenkins设置更改为“允许匿名读取访问” 2.取消CSRF保护

我不知道SVN与Jenkins沟通的主要步骤是什么。

请帮助,谢谢您的回答!

1 个答案:

答案 0 :(得分:1)

您收到的错误是HTTP 404 NOT FOUND,您需要检查钩子脚本中是否存在错误:

HTTP request sent, awaiting response... 404 Not Found
2019-09-23 13:50:53 ERROR 404: Not Found

因此,wget与之联系的URL 无效http://localhost:8080/jenkins/subversion/%UUID%/notifyCommit?rev=%REV%。您需要仔细检查URL的输入错误,并且%UUID%是正确的。请注意,我在您的钩子中看不到%UUID%的任何SET-也许是问题所在?