svn - 在 Windows 上使用 post-commit Hook 触发 Jenkins 远程构建

标签 svn batch-file jenkins post-commit-hook

我正在设置我的 Subversion 提交后 Hook 以在提交时远程触发 Jenkins 构建。

首先我改变了post-commit.tmplpost-commit.bat进而:

我首先尝试了这个:

SET REPOS=%1
SET REV=%2
C:/wget_for_win/wget http://localhost:8080/jenkins/job/my_project/build

然后我提交了一些代码,它按预期工作。
但这只会构建一个项目,但我希望它更灵活,所以我更改了 post-commit.bat我在 Jenkins Subversion Plugin page 上找到的那个:
SET REPOS=%1
SET REV=%2
SET UUID=`svnlook uuid %REPOS%`
C:/wget_for_win/wget \
 --header="Content-Type:text/plain;charset=UTF-8"
 --post-data="svnlook changed --revision %REV% %REPOS%"
 --output-document="-"
 --timeout=2
 http://localhost:8080/jenkins/subversion/%UUID%/notifyCommit?rev=%REV%

但是这个不行。它没有触发 Jenkins 继续构建。我在第二个脚本中做错了什么?

我认为在批处理文件中运行“svnlook”时存在问题。我跑svnlook uuid [REPO LOCATION]在cmd中,它显示了id。然后我把它放在一个批处理文件中:
SET UUID=svnlook uuid [REPO LOCATION]
ECHO %UUID%

运行上述批处理文件不会输出 id。它只显示 svnlook uuid [REPO LOCATION] .

最佳答案

最后我的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
)

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%

提交后 Hook 现在正在工作。
  • 对于那些想要 Windows 版 wget 的人,请使用 WGET for Windows .
  • 关于svn - 在 Windows 上使用 post-commit Hook 触发 Jenkins 远程构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20416498/

    相关文章:

    svn - [SVN] : The concept of branch

    svn - 未在存储库中完成时 svn copy 便宜吗?

    windows - 用于测试 TASKKILL 错误级别的语法

    github - 为什么 Jenkins 在添加 git 存储库时返回 http 500?

    ssh - 服务器 ip 上的 Jenkins ssh 作为构建参数传递

    java - Rest API 身份验证失败 - Jenkins

    svn - 回滚 svn 移动/重命名

    linux - Jenkins 在验证颠覆时出错

    windows - 带空格、双引号、管道的批处理文件参数

    windows - 如何批量增加文件名? (第2部分)