如何根据jenkins中特定文件的更改来设置构建

时间:2014-04-07 14:10:30

标签: version-control jenkins mercurial

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

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

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

那我怎么能做到这一点? 是否可以根据特定文件的更改设置post commit Hook?

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

提前致谢

2 个答案:

答案 0 :(得分: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

希望这有帮助。

答案 1 :(得分:0)

非常感谢您的重播

我通过在构建步骤中使用 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>之间当前一个和一个之间所做的更改