0

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

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

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

传统上,我将 svn 工作目录设置为 [../gitRepoRoot/appOne] 之类的东西,并且刚刚检测到构建 appOne 的更改,但到目前为止,我可以说没有办法使用 git 观看子目录。

无论如何,我都不是 CruiseControl.NET 专家,所以也许我遗漏了一些东西,或者有另一种方法可以达到同样的目的?

4

1 回答 1

0

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

见: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

于 2013-02-14T10:28:01.000 回答