【问题标题】:TeamCity Artifacts; Exclude Individual FilesTeamCity 工件;排除单个文件
【发布时间】:2012-09-28 15:10:39
【问题描述】:

我有一个 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 外部使用二进制文件?
  • 我真的想将工件用作可下载的版本供外部使用。

标签: build continuous-integration teamcity


【解决方案1】:

我不相信你可以。

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

当你设置依赖时,你可以像这样指定一个否定运算符:

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

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

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

Dependencies/SomeProject=>release

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

【讨论】:

  • 啊,这可能是我读过这篇文章并感到困惑的地方(只是 TC 的新手,从 CruiseControl 迁移)。
  • 这是一个可怕的 hack,但是你可以让它工作的一种方法是设置一个新的构建配置,它将依赖项作为一个人工依赖项,不包括一个二进制文件,然后发布它的自己的文物。
  • 想一想,这是为了我的 CI 构建。我想我可以复制那里的所有内容,并拥有一个新的发布配置,只需要它需要的东西。
  • 看来我们的想法一样!真的不理想,但我想现在必须这样做。谢谢
【解决方案2】:

聚会有点晚了,但仍然没有修复......

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

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

【讨论】:

  • 谢谢@oleksii!这为我指明了正确的方向。我需要根据环境(dev、qa 和 stage)部署三个单独的配置文件。我已经将自定义脚本配置为首先删除默认配置,然后通过将 web.dev.config 重命名为 web.config 将其替换为特定环境配置。
【解决方案3】:

我们目前的选择是投票支持此功能请求,网址为 http://youtrack.jetbrains.com/issue/TW-5244 并返回解决方法。

TeamCity artifact paths combine folders 问题提示同一个目标文件夹可以重复用于多个路径模式。

TeamCity docs 也声明了

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

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

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

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

【讨论】:

猜你喜欢
  • 2011-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多