【问题标题】:How to setup a build based on changes in particular files in jenkins如何根据詹金斯中特定文件的更改设置构建
【发布时间】:2014-04-25 16:34:37
【问题描述】:

我是 Jenkins 的新手。
我有一个场景,我必须以两种方式构建我的项目。

1) 如果有任何提交
2)如果某些特定文件有任何更改。

我必须在每种情况下调用不同的构建脚本。

那么我该如何实现呢??
是否可以根据特定文件的更改设置提交后挂钩?

我使用 Mercurial 作为版本控制系统

提前致谢

【问题讨论】:

  • 眼见你无言以对,我知道你所问的完全有可能。将自己连接到提交挂钩(或构建服务器上的更改组挂钩),您应该可以完全访问 mercurial 变更集。我建议使用 python 进行完全控制,并阅读 jenkins 以触发构建。 stackoverflow.com/questions/1705921/useful-mercurial-hooks

标签: version-control jenkins mercurial


【解决方案1】:

与 Git 插件不同,Mercurial 不提供文件级轮询,但您可以进行模块级轮询。

对于 #1:安装将在每次提交后构建的“Jenkins Poll SCM”插件
对于 #2:在您的项目中 > 源代码管理 > Mercurial > 单击高级 > 模块 (?) -- 这将帮助您仅为特定模块构建。

你甚至可以通过脚本来完成,我已经用 SVN 完成了。如果你想试试看这里的逻辑:

添加构建步骤 >> 执行 Shell >>

cd Workspace
a = 'svn up | grep .java'
if [ -z $a]; then
mvn install   --- Something like this

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    您好,感谢您的重播

    我通过在构建步骤中使用 hg diff 检查文件中的更改解决了这个问题。我使用执行windows批处理命令作为我的构建步骤,逻辑是这样的

    FOR /F "tokens=*" %%i IN ('hg diff -r -1:-2 <file_name>') DO SET X=%%i
    
    SET result=false
    
    IF "%X%" NEQ "" SET result=true
    
    IF "%result%"=="true" (
    
        "commit is in <file_name>, execute the build script for that"
    ) 
    
    IF "%result%" =="false" (
    
        "Commit made on other files..so normal build "
    )
    

    hg diff -r -1:-2 &lt;file_name&gt; 将为我提供我的 &lt;file_name&gt; 在当前和之前的变化之间所做的更改

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-22
      • 2020-03-30
      • 1970-01-01
      • 1970-01-01
      • 2015-01-03
      • 2019-07-19
      • 1970-01-01
      相关资源
      最近更新 更多