我在典型的三个阶段设置了我的 .gitlab-ci.yml 文件:测试、构建、部署。在构建阶段,我运行一个命令来编译我的项目并将其放入一个 tarball。构建阶段似乎成功执行,因为它进入了部署阶段,但部署阶段然后说它找不到 tarball。它在另一个目录中吗?这是怎么回事?谢谢。
2 回答
对于每个测试 gitlab-ci 清理构建文件夹,因此构建阶段的输出文件在部署阶段不可用。
您还需要在部署阶段重建您的项目。
“阶段”仅对订购测试有用,即避免在构建测试失败时尝试进行部署测试。
编辑:从 Gitlab 8.6 开始,可以使用依赖项功能
我很惊讶看到同样的行为(在 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