我是詹金斯的新手 我有一个场景,我必须以两种方式构建我的项目。
1)如果有任何提交
2)如果某些特定文件有任何变化。
我必须在每种情况下调用不同的构建脚本。
那我怎么能做到这一点? 是否可以根据特定文件的更改设置post commit Hook?
我使用Mercurial作为版本控制系统
提前致谢
答案 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>
之间当前一个和一个之间所做的更改