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