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

时间:2015-10-29 09:04:29

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

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

2 个答案:

答案 0 :(得分:4)

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

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

"阶段"仅用于订购测试,即如果构建测试失败,则避免尝试进行部署测试。

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

答案 1 :(得分:4)

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

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

我不想重复自己并轻易识别哪些步骤失败了。因此,我创建了不同的gitlab-ci 阶段cmakemaketest等。然后告诉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