使用GoCD,如何为下一阶段定义舞台的整个工作区(作为单个工件)?这将极大地简化我的设置,其中第二阶段需要从前一个获取许多不同的工件。
我尝试过以下工件声明:
.
这会在第一阶段上传期间导致错误:
[go] The rule [.] cannot match any resource under [pipelines/mypipeline]
[go] [go] Uploading finished. Failed to upload [.]
*
这不会导致错误,但会导致根文件夹中的每个目录单独上载,而不是整个工作区的单个工件。因此,我仍然需要获取多个具体工件,而不是一个大工作空间工件。
[go] Uploading artifacts from /var/lib/go-agent/pipelines/mypipeline/.svn to [defaultRoot]
[go] Uploading artifacts from /var/lib/go-agent/pipelines/mypipeline/cruise-output to [defaultRoot]
[go] Uploading artifacts from /var/lib/go-agent/pipelines/mypipeline/<dir1> to [defaultRoot]
[go] Uploading artifacts from /var/lib/go-agent/pipelines/mypipeline/<...> to [defaultRoot]
[go] Uploading artifacts from /var/lib/go-agent/pipelines/mypipeline/<dirN> to [defaultRoot]
我可以用另一个任务自己压缩所有内容并将其定义为一个工件,但是GoCD已经在其onw上拉链和解压缩,我认为必须有一个更简单的解决方案来解决我的问题。
答案 0 :(得分:0)
我不是专家,只是 GoCD 的新手,但在经历了同样的试验和错误的痛苦之后,我将分享我从经验中发现的语法。对于上游管道中的构建工件:
#{BUILD_DIR}/*.whl
- 定义构建工件时似乎通配符语法有效;注意:花括号 {XXX_XX}
之间的值为 pipeline parameters。#{ARTIFACT_DIR}
- 我更喜欢将所有工件放在一个单独的文件夹中,因为这样更容易获取。 GoCD 将压缩并传输文件夹,然后在下游管道中将其解压缩。在使用“获取工件”任务检索工件时在下游管道或同一管道中的另一个阶段:
#{ARTIFACT_DIR}
- 我只使用目录名称来获取整个目录./
- 在这种情况下,获取的目录将被提取到当前文件夹中注意:上述语法仅用于在“Fetch Artifact Task”中的源是文件(不是目录)复选框的情况下获取工件目录未选中。
当我尝试使用管道参数或环境变量(例如我的文件工件包含动态生成的版本)参数化文件名时,我无法 fetch artifact files 并且在 GoCD 文档或示例中没有找到任何内容暗示这是可能的。文档中有下载文件名的示例,该文件名是常量且不会更改。
如果可能,请分享参数化文件工件的示例或建议的解决方法(如果可能)。