Gitlab CI:找不到构建阶段的输出
Posted
技术标签:
【中文标题】Gitlab CI:找不到构建阶段的输出【英文标题】:Gitlab CI: Cannot find output of build stage 【发布时间】:2016-01-29 08:05:09 【问题描述】:我的 .gitlab-ci.yml 文件设置在典型的三个阶段:测试、构建、部署。在构建阶段,我运行一个命令来编译我的项目并将其放入一个 tarball。构建阶段似乎执行成功,因为它进入了部署阶段,但部署阶段然后说它找不到 tarball。它在另一个目录中吗?这是怎么回事?谢谢。
【问题讨论】:
相关about.gitlab.com/2016/03/10/…你可以创建artifacts: paths:
。这允许以后下载。
是的,我很确定这是我发布后添加的。
【参考方案1】:
对于每个测试 gitlab-ci 清理构建文件夹,因此构建阶段的输出文件在部署阶段不可用。
您还需要在部署阶段重建您的项目。
“阶段”仅对排序测试有用,即避免在构建测试失败时尝试进行部署测试。
编辑: 从 Gitlab 8.6 开始,可以使用dependencies feature
【讨论】:
很奇怪。将编译放在单独的工作中会更好吗?这样做的 DRY 方法是什么? 哦是的,这样会更好,但是此时你不能重用其他阶段/测试的输出。【参考方案2】:我很惊讶看到相同的行为(在 GitLab 8.4 上)。
我使用cmake
创建makefile,然后使用make
构建,然后使用make test
运行测试。我在build/
目录中运行所有这些。
我不想重复自己并轻松确定哪些步骤失败了。因此,我创建了不同的 gitlab-ci stages:cmake
、make
、test
等。然后我告诉 gitlab-ci 使用 @ 保留 build
目录987654332@选项:
cache:
key: "$CI_BUILD_REF_NAME"
untracked: true
paths:
- build/
我认为key
选项将为作用于同一分支的所有阶段保持相同的构建目录。在此处查看 gitlab-ci 文档:http://doc.gitlab.com/ce/ci/yaml/README.html#cache
编辑:不要为此使用cache
! GitLab 在 8.4 的阶段之间实现了可重用的工件:https://gitlab.com/gitlab-org/gitlab-ce/issues/3423
CI runner 必须适应支持这一点。见:https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues/336
【讨论】:
我回来发帖 #3423 但我看到你已经这样做了。 +1。不过,该功能似乎已被推迟了几次。以上是关于Gitlab CI:找不到构建阶段的输出的主要内容,如果未能解决你的问题,请参考以下文章