TeamCity 构件;排除个别文件

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

提前致谢。


+1,因为我遇到了同样的问题。您是要将工件发布为 TeamCity 中的工件依赖项以供其他用途使用,还是因为您想在 TC 外部使用二进制文件? - infojolt
我想将构件作为可下载的发布版本,供外部使用。 - Monkeeman69
3个回答

7

我不相信你能做到。

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

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

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

这是一种非常不好的方法,但你可以通过设置一个新的构建配置来使其工作,该配置会将依赖项作为构件依赖获取,排除其中的二进制文件,然后发布自己的构件。

也就是说,创建一个新的构建配置并发布:

Dependencies/SomeProject=>release

然后从此构建配置中引用工件,而不是其他的构建配置。

啊,这可能是我看过的地方,导致我感到困惑(我刚开始使用TC,并从CruiseControl迁移)。 - Monkeeman69
这是一个可怕的hack,但你可以通过设置新的构建配置来使其工作,该配置将依赖项作为构件依赖项获取,排除一个二进制文件,然后发布自己的构件。 - infojolt
想想看,这是为了我的CI构建。我想我可以复制所有内容,并创建一个新的发布配置,只需要它所需的东西。 - Monkeeman69
好像我们刚刚有了同样的想法!这并不理想,但我想现在只能这样做了。谢谢。 - Monkeeman69

5

虽然有些迟到了,但问题仍未得到解决...

最终我在项目中添加了一个新的构建步骤。它是命令行>自定义脚本。然后我使用以下命令来删除我不想要的文件以生成产物。这个步骤会在生成产物之前运行。

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

Explanation for del command

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

感谢 @oleksii!这指引了我正确的方向。我需要有三个不同的配置文件,根据环境(dev,qa和stage)进行部署。 我已经配置了自定义脚本,首先删除默认配置,然后通过重命名将其替换为特定环境配置,例如将 web.dev.config 重命名为 web.config。 - hatsrumandcode

2
我们目前的选择是在http://youtrack.jetbrains.com/issue/TW-5244投票支持此功能请求,然后退而求其次使用解决方法。 TeamCity artifact paths combine folders问题提示相同的目标文件夹可以被多个路径模式重复使用。 TeamCity文档也指出:

TeamCity将从模式中的第一个通配符开始创建目录。

因此,在许多情况下,可以将排除问题反转为多个包含问题。
例如,我能够仅通过过滤扩展名而不是寻找如何从我的模板中排除-:**/.svn
templates/**/*.vm => templates
templates/**/*.xsl => templates

1
已在TeamCity 10中修复 https://youtrack.jetbrains.com/issue/TW-5244 - Max

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接