我的.gitlab-ci.yml文件设置在典型的三个阶段:测试,构建,部署。在构建阶段,我运行一个命令来编译我的项目并将其放入tarball中。构建阶段似乎成功执行,因为它转移到部署阶段,但部署阶段然后表示它无法找到tarball。它在另一个目录中吗?这是怎么回事?感谢。
答案 0 :(得分:4)
对于每个测试gitlab-ci清理构建文件夹,因此构建阶段的输出文件在部署阶段不可用。
您还需要在部署阶段重建项目。
"阶段"仅用于订购测试,即如果构建测试失败,则避免尝试进行部署测试。
编辑: 从Gitlab 8.6开始,可以使用dependencies feature
答案 1 :(得分: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