仅在CVS作业的特定文件夹中的更改上触发Jenkins作业
我有这样一个项目:仅在CVS作业的特定文件夹中的更改上触发Jenkins作业,jenkins,hudson,Jenkins,Hudson,我有这样一个项目: project/test1 (folder) project/test2 (folder) project/test3 (folder) project/abc.java (file) param( [string]$repos, [string]$rev ) $commitTrunk = $false (Invoke-Expression "svnlook dirs-changed -r $rev `"$repos`"") | % { if ($
project/test1 (folder)
project/test2 (folder)
project/test3 (folder)
project/abc.java (file)
param(
[string]$repos,
[string]$rev
)
$commitTrunk = $false
(Invoke-Expression "svnlook dirs-changed -r $rev `"$repos`"") | % {
if ($_ -match "^trunk") { $commitTrunk = $true }
}
if ($commitTrunk) {
$url = "http://myserver/job/Application/build?token=mytoken&cause=SVN+Commit"
$page = (New-Object Net.WebClient).DownloadString($url)
write $page
}
test1文件夹包含扩展名为.java的文件,以及包含更多.java文件的子文件夹
我只想在提交/更改test1文件夹中的文件和文件夹时触发生成
这有可能吗?我认为从詹金斯内部不可能做到这一点 您必须从构建脚本或版本服务器挂钩执行此操作 我们从svn触发构建,并希望根据提交的分支运行不同的构建 我们有运行Powershell脚本的钩子,如下所示:
project/test1 (folder)
project/test2 (folder)
project/test3 (folder)
project/abc.java (file)
param(
[string]$repos,
[string]$rev
)
$commitTrunk = $false
(Invoke-Expression "svnlook dirs-changed -r $rev `"$repos`"") | % {
if ($_ -match "^trunk") { $commitTrunk = $true }
}
if ($commitTrunk) {
$url = "http://myserver/job/Application/build?token=mytoken&cause=SVN+Commit"
$page = (New-Object Net.WebClient).DownloadString($url)
write $page
}
svnlook
stuff检查当前提交的URL,看它是否是主干。如果是,则通过调用Jenkins作业URL触发构建
您可以执行类似的操作,检查路径是否为project/test1
我认为Git还有一个相当于svn“hook”系统的功能。您是否尝试在高级选项中使用排除区域模式
也许您可以排除test2和test3文件夹以及abc.java文件。项目中有许多文件和文件夹。我只想在test1文件夹中的文件更改时触发。是否有包含区域的选项?或者我们可以在排除区域中写入模式来选择除test1文件夹之外的所有文件夹吗?您看到这个答案了吗?解决了的。创建了一个新项目,并为模块提供了“远程名称”“项目/test1”。选中“轮询SCM”以每分钟检查此文件夹中是否有任何更新。添加了生成后操作,以便在该项目发生更改时生成其他项目,并输入了我的主项目的名称。