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

14

我有一个简单的计划和一项简单的任务。

任务:

  1. 源代码检查
  2. MSBuild
  3. 运行测试
  4. 生成测试报告

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

如果我在本地机器上打开报告,那么报告可以正常工作,但是在Bamboo上,我收到“页面未找到”的错误,因为Bamboo没有收集“Screenshots”文件夹。

如何设置Artifact Definition以收集带有文件夹的文件?

P.S. 我尝试设置\*.*复制模式,但Bamboo仅收集文件(不包括文件夹和子文件夹)。

3个回答

13
您只需要提供文件夹位置,例如 "build/",然后在复制模式中可以放置**/*.*,这样可以复制所有所需的文件。
请注意:
  • 位置是相对于构建目录的。不要使用绝对路径引用位置。
  • 通配符不支持位置。对于此字段,请提供文件所在的文件夹名称。
此外,您可以定义任意数量的工件定义。

1
@hatesms 是的,它会。 - Andy Thomas

3

Bamboo使用"Ant文件复制模式"

  • 递归匹配所有文件:**/*
    • 这包括几乎所有内容
    • 不幸的是,在我测试的Linux构建代理上,这不包括点文件(dot-files)。我找不到其他解决办法,除非创建第二个artifact(模式**/.*)或者创建一个存档。
  • 匹配任何子文件夹中的所有文件:*/*
    • 这不包括foo/bar/test.xyz
    • 这包括foo/test.xyzbar/test.xyz

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


3

最好的方法是将你的所有工件压缩在一起。我创建了一个bash脚本来完成这个任务。

cd "toArtifactFolder"
zip -r Artifact .

然后在 bamboo 项目设置中,您需要编辑 Artifact 并将其位置更改为存放该艺术品 zip 文件的位置。 接下来,在复制模式中只需输入 zip 文件名,例如 Artifact.zip


请看我的问题:“如何设置Artifact Definition以收集文件夹中的文件”。 我的主要目标是:通过Web打开带有截图的html报告文件。 如果我将所有文件收集到归档中,那么首先我需要下载、解压缩,仅在全部完成后才能打开报告。这很不方便。 - Vladimir Avdeev
是的,我已经完成了这个脚本。这样我的档案大小为50mb。每次构建后我都需要下载这个档案... 这不是一个好方法。 - Vladimir Avdeev
最终我采取了相同的方法来重复使用我的node_modules文件夹作为artifact。我添加了一个"command"任务,可执行文件是"tar","-cvzf node_modules.tar.gz ./node_modules/"作为参数。然后,在消费作业中创建一个artifact依赖之后,我创建了一个对应的"command"任务,其中我需要使用该artifact,唯一的区别在于参数值:" -xvzf node_modules.tar.gz"。 - bkidd

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