【问题标题】:Gitlab CI: Cannot find output of build stageGitlab CI:找不到构建阶段的输出
【发布时间】:2016-01-29 08:05:09
【问题描述】:

我的 .gitlab-ci.yml 文件设置在典型的三个阶段:测试、构建、部署。在构建阶段,我运行一个命令来编译我的项目并将其放入一个 tarball。构建阶段似乎执行成功,因为它进入了部署阶段,但部署阶段然后说它找不到 tarball。它在另一个目录中吗?这是怎么回事?谢谢。

【问题讨论】:

标签: gitlab gitlab-ci gitlab-ci-runner


【解决方案1】:

对于每个测试 gitlab-ci 清理构建文件夹,因此构建阶段的输出文件在部署阶段不可用。

您还需要在部署阶段重建您的项目。

“阶段”仅对排序测试有用,即避免在构建测试失败时尝试进行部署测试。

编辑: 从 Gitlab 8.6 开始,可以使用dependencies feature

【讨论】:

  • 很奇怪。将编译放在单独的工作中会更好吗?这样做的 DRY 方法是什么?
  • 哦是的,这样会更好,但是此时你不能重用其他阶段/测试的输出。
【解决方案2】:

我很惊讶看到相同的行为(在 GitLab 8.4 上)。

我使用cmake 创建makefile,然后使用make 构建,然后使用make test 运行测试。我在build/ 目录中运行所有这些。

我不想重复自己并轻松确定哪些步骤失败了。因此,我创建了不同的 gitlab-ci stagescmakemaketest 等。然后我告诉 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。不过,该功能似乎已被推迟了几次。
猜你喜欢
  • 2021-10-29
  • 2022-11-14
  • 2016-12-16
  • 2019-04-26
  • 1970-01-01
  • 2019-09-21
  • 2016-11-19
  • 2018-09-26
  • 2022-01-11
相关资源
最近更新 更多