13

我有一个 TeamCity 构建配置,其中包括以下发布工件:

Source\Builder\bin\Release\*.dll=>release

这很好用,但是我想排除一个 dll(有很多),并且读过您可以使用 + & - 运算符来执行此操作。类似于以下内容:

+: Source\Builder\bin\Release\*.dll=>release
-: Source\Builder\bin\Release\Builder.*

一旦我添加了这些,就不会发布任何工件,并且我在构建日志中收到以下错误(看起来它正在将 + 计为路径的一部分):

[Publishing artifacts] Collecting files to publish [+:Source\Builder\bin\Release\*.dll=>release]
[Publishing artifacts] Artifacts path +:Source/Builder/bin/Release/*.dll not found

我正在使用 7.1.1 版,任何人都有任何想法(我不确定这些运算符是否有效)。我已经看到了一个 MSBuild 的解决方案,但很惊讶这个功能不可用。

提前致谢。

4

3 回答 3

7

我不相信你可以。

但是,如果您在另一个构建配置中使用工件作为工件依赖项,则可以在那里排除特定文件。

设置依赖项时,可以像这样指定负运算符:

+:release/**=>Dependencies/SomeProject
-:release/SomeBinary.dll

这是一个可怕的 hack,但是你可以让它工作的一种方法是设置一个新的构建配置,它将依赖项作为一个工件依赖项,不包括一个二进制文件,然后发布它自己的工件。

如,创建一个新的构建配置并发布:

Dependencies/SomeProject=>release

然后从这个构建配置中引用工件而不是另一个。

于 2012-10-08T11:18:59.377 回答
4

派对有点晚了,但仍然没有修复......

我最终为项目添加了最后一个构建步骤。它是命令行 > 自定义脚本。然后,我使用此命令删除了工件中不需要的文件。这将在工件收集之前运行。

del /S /Q "src\apps\*.xml" 
del /S /Q "src\apps\*.pdb"

del命令说明

/S  Delete from all Subfolders (DELTREE)
/Q  Quiet mode, do not give a Yes/No Prompt before deleting
 *  Match any characters
于 2014-12-10T18:45:15.433 回答
2

我们当前的选项是在 http://youtrack.jetbrains.com/issue/TW-5244上投票支持此功能请求,然后返回解决方法。

TeamCity 工件路径结合文件夹问题提示,同一目标文件夹可重复用于多个路径模式。

TeamCity 文档还指出

TeamCity 将从模式中第一次出现通配符开始创建目录。

因此,在许多情况下,可以将排除问题逆向包含多个包含。

例如,我没有潜伏如何-:**/.svn从我的模板中排除,而是能够通过扩展过滤它们:

templates/**/*.vm => templates
templates/**/*.xsl => templates
于 2013-10-10T09:22:42.963 回答