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 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。不过,该功能似乎已被推迟了几次。

以上是关于Gitlab CI:找不到构建阶段的输出的主要内容,如果未能解决你的问题,请参考以下文章

在 kotlin 中找不到我的 GitLab CI 测试

Latexmk:在 Gitlab CI 中找不到命令

为啥 GitLab Ci 找不到我的缓存文件夹?

Gitlab CI/CD 运行器:找不到 mvn 命令

Gitlab CI 设置错误 - 找不到 JavaScript 运行时

使用带有 gitlab 页面的 jekyll,它说当它使用 gitlab CI 部署网站时找不到主题,我已经安装了它