如何让 Bamboo 文物收集整个文件夹?

Posted

技术标签:

【中文标题】如何让 Bamboo 文物收集整个文件夹?【英文标题】:How to have Bamboo artifacts collect a whole folders? 【发布时间】:2013-02-15 12:51:17 【问题描述】:

我有一个简单的计划和一份简单的工作。

任务:

    源代码签出 MSBuild 运行测试 生成测试报告

我的实用程序通过四个步骤生成带有屏幕截图的测试报告。该报告包含图像的绝对链接。 (例如:onclick="window.open('./Screenshots/66ef3a03-8b82-4b40-b49d-b0155e273738.png');return false;")。

如果我在本地机器上打开报告,报告工作正常,但在 Bamboo 上我收到错误“找不到页面”,因为 Bamboo 没有收集“屏幕截图”文件夹。

如何设置工件定义以收集包含文件的文件夹?

附:我尝试设置\*.*复制模式,但Bamboo只收集文件(没有文件夹和子文件夹)

【问题讨论】:

【参考方案1】:

您只需提供文件夹位置,例如“build/”,然后,在复制模式中,您可以输入 **/*.* 这应该复制所有文件你要。

请注意:

该位置相对于构建目录。不要使用绝对路径来引用该位置。 位置不支持星号。对于此字段,请提供文件所在的文件夹名称。

另外,您可以根据需要定义任意数量的工件定义。

【讨论】:

@hatesms 是的,它会的。【参考方案2】:

执行此操作的最佳方法是将所有工件压缩在一起。我创建了一个 bash 脚本来执行此操作

cd "toArtifactFolder"
zip -r Artifact .

然后在竹子项目设置中,您必须编辑工件并将位置更改为工件 zip 文件所在的位置 然后在 Copy Pattern 中输入 zip 文件,例如 Artifact.zip

【讨论】:

请参阅我的问题:“我如何设置工件定义以收集包含文件的文件夹”。我的主要目标:通过网络打开带有屏幕截图的 html 报告文件。如果我收集所有要存档的文件,首先我应该下载、解压缩,然后才打开报告。这很不方便。 是的,我已经完成了这个脚本。这样,我的存档大小为 50mb。每次构建后我都应该下载这个存档..这不是一个好办法。 我最终采用了相同的方法来重用我的 node_modules 文件夹作为工件。我添加了一个“命令”任务,可执行文件为“tar”,“-cvzf node_modules.tar.gz ./node_modules/”作为参数。然后在消费作业中创建工件依赖项后,我创建了一个相应的“命令”任务,我需要在其中使用工件,唯一的区别是参数值:“-xvzf node_modules.tar.gz”【参考方案3】:

Bamboo 使用"Ant file copy pattern"。

递归匹配所有文件:**/* 这确实包括几乎所有内容 不幸的是,这包括dot-files,至少在我对linux构建代理的测试中。除了第二个工件(模式**/.*)或创建存档之外,我找不到解决方法。 匹配任何子文件夹中的所有文件:*/* 这不包括foo/bar/test.xyz 这确实包括foo/test.xyzbar/test.xyz

您可以进行更高级的匹配;例如您可以使用build/**/*.jar 从构建目录中复制所有 jar。 欲了解更多信息,请参阅docs

【讨论】:

以上是关于如何让 Bamboo 文物收集整个文件夹?的主要内容,如果未能解决你的问题,请参考以下文章

Bamboo 到 Jenkins 迁移:我可以访问和比较 XML 配置文件吗?

如何让 Bamboo 期望任务的不同返回码?

获取 Bamboo 上的提交文件列表

Bamboo & Docker - 我如何发布在 Docker 环境中创建的工件?

译文物联网:实施与挑战

文物数字藏品,开启文化传承的新方式