Jenkins CI:如何在SVN提交上触发构建

svn continuous-integration jenkins jenkins-plugins

98140 观看

4回复

13953 作者的声誉

我需要设置哪些插件和插件功能才能让我的Jenkins作业在任何时候将代码提交给SVN项目时触发构建?

我已经安装了标准SVN插件以及SVN标记插件,但我没有看到任何允许触发器配置的新功能。

作者: IAmYourFaja 的来源 发布者: 2012 年 4 月 4 日

回应 (4)


80

56638 作者的声誉

决定

有两种方法可以解决这个问题:

我推荐第一个选项,因为它易于实现。在构建过程中成熟后,切换到第二个。

  1. 轮询存储库以查看是否发生了更改。如果两个提交在同一轮询间隔内进入,则可能“跳过”提交。 有关如何执行此操作的说明,请注意第四个屏幕截图,其中您在作业上根据轮询存储库(使用类似crontab的配置)配置“构建触发器”。

  2. 将您的存储库配置为具有提交后挂钩,以通知Jenkins构建需要启动。 有关如何执行此操作的说明,请参阅“post-commit hooks”部分

SVN标记功能不是轮询的一部分,它是将源代码的当前“头”提升为标记,对构建进行快照的一部分。这允许您将Jenkins buid#32称为SVN标记/标记/ build-32(或类似的东西)。

作者: Edwin Buck 发布者: 04.04.2012 03:32

0

29 作者的声誉

我使用Python创建了一个带有一些bash的工具来触发Jenkins构建。基本上,当提交命中SVN服务器时,您必须从提交后收集这两个值:

REPOS="$1"
REV="$2"

然后使用“svnlook dirs-changed $ 1 -r $ 2”来获取刚刚提交的路径。然后,您可以检查要构建的存储库。想象一下,你有数十万个项目。你无法检查整个存储库,对吗?

你可以从GitHub看看我的脚本

作者: Phan Dolphy 发布者: 19.08.2015 02:50

-1

1 作者的声誉

您可以使用post-commit钩子。

将post-commit钩子脚本放在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在最后添加以了解问题以及提交后挂钩脚本是否正在运行。

作者: Megha 发布者: 01.04.2016 11:56

1

31 作者的声誉

您只需要一个插件即Subversion插件。

然后简单地,进入Jenkins→job_name→ 构建触发器部分→(i)远程触发构建(即,从脚本)验证令牌:Token_name

转到SVN服务器的hooks目录,然后触发以下命令:

  1. cp post-commit.tmpl post-commit
  2. chmod 777 post-commit
  3. chown -R www-data:www-data post-commit
  4. 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
作者: Hemin Patel 发布者: 18.10.2017 06:31
32x32