【问题标题】:How to trigger build for changes in a subdirectory of a Git repo when using CruiseControl.Net?使用 CruiseControl.Net 时如何为 Git 存储库的子目录中的更改触发构建?
【发布时间】:2013-02-13 22:17:15
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 您找到解决方案了吗?如果以下答案有帮助,请采纳

标签: git cruisecontrol.net


【解决方案1】:

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

见: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 了解其他选项

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-23
    相关资源
    最近更新 更多