Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅在CVS作业的特定文件夹中的更改上触发Jenkins作业_Jenkins_Hudson - Fatal编程技术网

仅在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”以每分钟检查此文件夹中是否有任何更新。添加了生成后操作,以便在该项目发生更改时生成其他项目,并输入了我的主项目的名称。