【问题标题】:Triggering Jenkins builds remotely with post-commit hook on Windows在 Windows 上使用 post-commit 挂钩触发 Jenkins 远程构建
【发布时间】:2013-12-23 08:49:08
【问题描述】:

我正在设置我的 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 更改为我在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”存在问题。我在 cmd 中运行svnlook uuid [REPO LOCATION],它会显示 id。然后我把它放在一个批处理文件中:

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

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

【问题讨论】:

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


    【解决方案1】:

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

    提交后挂钩现在正在工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-07
      • 1970-01-01
      • 2016-10-11
      • 2017-12-31
      • 2021-12-28
      • 2019-04-10
      • 1970-01-01
      相关资源
      最近更新 更多