使用CruiseControl.Net时如何触发Git仓库子目录中的更改构建?

时间:2013-02-13 22:17:15

标签: git cruisecontrol.net

我正在使用SVN repos转换为代码库的Git repos。我们正在尝试在此过渡期间维护大部分现有的构建/部署过程,这意味着使用我们现有的CruiseControl.NET CI服务器进行构建。

我遇到的问题是我们在git root下面有几个不同的app目录,这使我无法检测到特定子文件夹中的更改并仅构建相关的应用程序,例如:

../gitRepoRoot/appOne
../gitRepoRoot/appTwo

传统上我已经将svn工作目录设置为类似[../gitRepoRoot/appOne]的东西,并且刚刚检测到构建appOne的更改,但到目前为止我可以告诉我无法使用git观察子目录

我不是任何方式的CruiseControl.NET专家,所以也许我错过了一些东西,或者还有另一种方法可以达到同样的目的?

1 个答案:

答案 0 :(得分:0)

根据您拥有sourcecontrol块的方式,您可以使用包含/排除过滤器来控制构建触发。

请参阅:http://www.cruisecontrolnet.org/projects/ccnet/wiki/Filtered

例如:

<sourcecontrol type="filtered">
  <dynamicValues />
  <exclusionFilters />
  <inclusionFilters>
    <pathFilter>
      <pattern>appOne</pattern>
    </pathFilter>
    <pathFilter>
      <pattern>appTwo</pattern>
    </pathFilter>
  </inclusionFilters>
  <sourceControlProvider type="git">
    <autoGetSource>True</autoGetSource>
    <branch>master</branch>
    <commitUntrackedFiles>False</commitUntrackedFiles>
    <dynamicValues />
    <executable>C:\Program Files (x86)\Git\bin\git</executable>
    <fetchSubmodules>False</fetchSubmodules>
    <repository>**repo**</repository>
    <tagCommitMessage>CCNet Build {0}</tagCommitMessage>
  </sourceControlProvider>
</sourcecontrol>

注意: 默认情况下,pathFilter元素区分大小写,但可以像这样禁用它:

<pathFilter>
  <caseSensitive>False</caseSensitive>
  <pattern>appOne</pattern>
</pathFilter>

有关其他选项,请参阅http://www.cruisecontrolnet.org/projects/ccnet/wiki/PathFilter