【问题标题】:How to setup a build based on changes in particular files in jenkins如何根据詹金斯中特定文件的更改设置构建
【发布时间】:2014-04-25 16:34:37
【问题描述】:
我是 Jenkins 的新手。
我有一个场景,我必须以两种方式构建我的项目。
1) 如果有任何提交
2)如果某些特定文件有任何更改。
我必须在每种情况下调用不同的构建脚本。
那么我该如何实现呢??
是否可以根据特定文件的更改设置提交后挂钩?
我使用 Mercurial 作为版本控制系统
提前致谢
【问题讨论】:
标签:
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 <file_name> 将为我提供我的 <file_name> 在当前和之前的变化之间所做的更改