Gitlab CI: 找不到构建阶段的输出

Gitlab CI: Cannot find output of build stage

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

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

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

"stages" 仅对订购测试有用,即避免在构建测试失败时尝试进行部署测试。

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

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

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

我不想重复自己,也不想轻易确定哪些步骤失败了。因此,我创建了不同的 gitlab-ci 阶段 cmakemaketest 等。然后我告诉 gitlab-ci 使用 cache 选项保留 build 目录:

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 运行 用户将不得不进行调整以支持此功能。参见:https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues/336