TeamCity Artifacts;排除单个文件

时间:2012-10-08 11:09:49

标签: build continuous-integration teamcity

我有一个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的解决方案,但我很惊讶这个功能不可用。

提前致谢。

3 个答案:

答案 0 :(得分:7)

我不相信你能。

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

设置依赖项时,可以指定负面运算符,如下所示:

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

这是一个可怕的黑客攻击,但是你可以使用它的一种方法是设置一个新的构建配置,它将依赖关系作为工件依赖项,排除一个二进制文件,然后发布它自己的工件。

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

Dependencies/SomeProject=>release

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

答案 1 :(得分: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

答案 2 :(得分:2)

我们目前的选择是投票支持此功能请求 http://youtrack.jetbrains.com/issue/TW-5244并且无法解决问题。

TeamCity artifact paths combine folders提示可以为多个路径模式重用相同的目标文件夹。

TeamCity docs也说明了

  

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

因此,在许多情况下,可以将排除问题反演为多个包含物。

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

templates/**/*.vm => templates
templates/**/*.xsl => templates