删除Teamcity'中的目录结构;人工制品

删除Teamcity'中的目录结构;人工制品,teamcity,artifacts,Teamcity,Artifacts,我使用Teamcity构建不同的包,并希望将这些包保存为工件。我在TeamCity中的工件路径如下: %system.teamcity.build.workingDir%\**\Release**/*.wsp => Solution 现在TeamCity会在正确构建后收集任何发布目录中的所有WSP文件。但它会被保存,包括所有子目录,如: 我只希望.wsp文件直接位于“解决方案”下,而不需要目录树。来自TeamCity文档: 通配符-发布与Ant-like通配符模式(“”和“)匹配的文

我使用Teamcity构建不同的包,并希望将这些包保存为工件。我在TeamCity中的工件路径如下:

%system.teamcity.build.workingDir%\**\Release**/*.wsp => Solution 
现在TeamCity会在正确构建后收集任何发布目录中的所有WSP文件。但它会被保存,包括所有子目录,如:

我只希望.wsp文件直接位于“解决方案”下,而不需要目录树。

来自TeamCity文档:

通配符-发布与Ant-like通配符模式(“”和“)匹配的文件 仅支持“*”通配符)。通配符应表示 相对于生成签出目录的路径。文件将被删除 已发布,保留目录的结构与 通配符(不会创建与“静态”文本匹配的目录)。 也就是说,TeamCity将从第一个开始创建目录 在模式中出现通配符


在构建脚本(或附加的最终构建步骤)中,您必须将必要的文件复制到单个文件夹,并将该文件夹作为工件发布

而不是像@manojlds建议的那样进行复制,您可能可以通过修改yout.csproj文件中的OutputPath来实现一些功能,或者在构建.sln时输入OutDir属性覆盖(如果您是)。请注意,这两种方法都不是完美的-例如,TeamBuild(Visual Studio ALM工具中的CI服务器)将所有内容重定向到一个目录中,这可能会导致完全混乱,并且只适用于最简单的情况。

我遇到了这个问题,我想从子目录收集各种安装文件。添加PowerShell runner作为构建步骤非常强大,很好地解决了这一问题

get-childitem -Recurse -Include *.wsp | Move-Item -destination .

这将在TeamCity查看工件之前将它们移动到根目录,在那里,基本工件路径(如
*)可以将其拾取以进行最终输出。

是否愿意解释为什么值得进行下一票?为什么不投另一个呢?或者我错过了什么?你认为这应该是一个评论吗?尝试解释你在否决投票时的想法是个好主意。我写了一个递归收集文件的工具。成功了。不是最好的解决方案,而是“a”solution@Max克林格:有一种叫做PowerShell的工具,很适合制作这样的工具:Dmaybe。但是在CS中编程更快:)=如果你进一步查看TC文档,有一些例子,其中一个似乎说你可以扁平化文件夹结构(子目录中的所有*.x文件都到目标的根目录):
target//.txt=>docs*-发布目标目录及其子目录中的所有txt文件。这些文件将在docs目录下的buildartifacts中可用。
但不确定该语法是什么。当然可以在windows TC服务器上运行。@slolife提到的例子是
target/***.txt=>docs
,但它并没有扁平化目录结构,它只是在名为
docs
的目录下复制该结构。TeamCity文档中的其他地方解释说,当使用通配符(无论是
*
还是
***
)时,“将发布文件,保留与通配符匹配的目录结构(不会创建与“静态”文本匹配的目录)。也就是说,TeamCity将从模式中第一次出现通配符开始创建目录。“