12

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

4

2 回答 2

6

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

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

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

编辑:从 Gitlab 8.6 开始,可以使用依赖项功能

于 2015-10-29T14:16:53.333 回答
4

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

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

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

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

于 2016-01-26T21:07:30.003 回答