Svn 在Windows上使用提交后钩子远程触发Jenkins构建

Svn 在Windows上使用提交后钩子远程触发Jenkins构建,svn,batch-file,jenkins,post-commit-hook,Svn,Batch File,Jenkins,Post Commit Hook,我正在设置Subversion提交后钩子,以便在提交时远程触发Jenkins构建 首先,我将post commit.tmpl更改为post commit.bat,然后: 我先试了一下: SET REPOS=%1 SET REV=%2 C:/wget_for_win/wget http://localhost:8080/jenkins/job/my_project/build 然后我提交了一些代码,它按预期工作。 但这只会生成一个项目,但我希望它更灵活,因此我将post commit.bat更改

我正在设置Subversion提交后钩子,以便在提交时远程触发Jenkins构建

首先,我将
post commit.tmpl
更改为
post commit.bat
,然后:

我先试了一下:

SET REPOS=%1
SET REV=%2
C:/wget_for_win/wget http://localhost:8080/jenkins/job/my_project/build
然后我提交了一些代码,它按预期工作。 但这只会生成一个项目,但我希望它更灵活,因此我将
post commit.bat
更改为我在以下网站上找到的项目:

但是这个不行。这并没有促使詹金斯继续建造。第二个剧本我做错了什么

我认为在批处理文件中运行“svnlook”时存在问题。我在cmd中运行
svnlook uuid[REPO LOCATION]
,它会显示id。然后我将其放入一个批处理文件中:

SET UUID=svnlook uuid [REPO LOCATION]
ECHO %UUID%

运行上述批处理文件不会输出id。它只显示
svnlook uuid[REPO LOCATION]
最后我的
提交后.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
)

C:\wget_for_win\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钩子现在正在工作

  • 对于需要Windows版本的wget的用户,请使用
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
)

C:\wget_for_win\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%