TeamCity Artifacts; 排除单个文件

Mon*_*n69 13 teamcity continuous-integration build

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

Source\Builder\bin\Release\*.dll=>release
Run Code Online (Sandbox Code Playgroud)

这工作正常,但我想排除一个DLL(有很多),并已阅读,你可以使用+& - 运算符来做到这一点.有点像:

+: Source\Builder\bin\Release\*.dll=>release
-: Source\Builder\bin\Release\Builder.*
Run Code Online (Sandbox Code Playgroud)

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

[Publishing artifacts] Collecting files to publish [+:Source\Builder\bin\Release\*.dll=>release]
[Publishing artifacts] Artifacts path +:Source/Builder/bin/Release/*.dll not found
Run Code Online (Sandbox Code Playgroud)

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

提前致谢.

psy*_*ych 7

我不相信你能.

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

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

+:release/**=>Dependencies/SomeProject
-:release/SomeBinary.dll
Run Code Online (Sandbox Code Playgroud)

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

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

Dependencies/SomeProject=>release
Run Code Online (Sandbox Code Playgroud)

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


ole*_*sii 5

聚会有点晚了,但仍然没有解决......

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

del /S /Q "src\apps\*.xml" 
del /S /Q "src\apps\*.pdb"
Run Code Online (Sandbox Code Playgroud)

del命令解释

/S  Delete from all Subfolders (DELTREE)
/Q  Quiet mode, do not give a Yes/No Prompt before deleting
 *  Match any characters
Run Code Online (Sandbox Code Playgroud)