我一直在尝试制作一条用于部署MEAN应用程序的GitLab CI / CD管道。我分为三个阶段: 1.测试 2.建立 3.部署
构建阶段有一个build_angular作业,该作业生成工件。现在,我想在下一步即部署中使用这些工件。 部署作业告诉我它已经下载了工件(已附加图像),但是现在我想提取该工件,但是我不知道该工件在哪里下载。
答案 0 :(得分:1)
GitLab正在清理两个后续作业之间的工作目录。这就是为什么您必须使用artifacts
和dependencies
在作业之间传递文件的原因。
当“部署”作业表明已下载构建工件时,仅表示它们已像以前一样被重新创建。下载的工件的位置与工件路径的位置匹配(在.yml文件中声明)。
build_job:
stage: build
script:
- echo "create bin/ directory"
- make
artifacts:
paths:
- bin/
deploy_job:
stage: deploy
script:
- ls bin/
dependencies:
- build_job
目录bin/
从deploy_job
传递到build_job
。
答案 1 :(得分:0)
请注意,gitlab-org/gitlab-runner
issue 2656提到:
但是文档实际上讨论了这种限制:“在成功的最新管道中”:现在无法从当前正在运行的管道中获取工件。
谢谢!
我认为文档应该确实使您更加明显,您需要在访问工件之前完成整个管道,并且您不能在管道内使用它。在我看来,此功能的明显用例是在服务器上部署,并且您希望服务器部署成为管道的一部分。
来自Pipelines / Jobs Artifacts / Downloading the latest artifacts
要从工件下载单个文件,请使用以下URL:
https://example.com/<namespace>/<project>/-/jobs/artifacts/<ref>/raw/<path_to_file>?job=<job_name>
以allpix-squared/allpix-squared
为例。
它的.gitlab-ci.yml
deploy stage调用具有正确路径的脚本:
sudo -u cvclicdp -i $RUNNER_LOCATION/.gitlab-ci.d/gitlab_deploy.sh $RUNNER_LOCATION $BUILD_PATH