Gitlab:如何在构建后的后续作业中使用工件

Gou*_*rvi 12 gitlab gitlab-ci

我一直在尝试制作一个 GitLab CI/CD 管道来部署我的 MEAN 应用程序。我有三个阶段:1. 测试 2. 构建 3. 部署

构建阶段有一个生成工件的 build_angular 作业。现在我想在下一阶段使用这个工件,即部署。部署作业告诉我它已下载工件(已附加图像),但现在我想提取此工件,但我不知道工件下载到哪里。

文档中的任何地方都没有提到正在下载工件的路径。 如果

pia*_*ton 18

GitLab 正在清理两个后续作业之间的工作目录。这就是为什么您必须在作业之间使用artifactsdependencies传递文件的原因。

当“部署”作业说已下载构建工件时,这仅意味着它们已像以前一样重新创建。下载的工件的位置与工件路径的位置(如 .yml 文件中声明的)相匹配。

例子

build_job:
  stage: build
  script:
  - echo "create bin/ directory"
  - make
  artifacts:
    paths:
      - bin/

deploy_job:
  stage: deploy
  script:
  - ls bin/
  dependencies:
  - build_job
Run Code Online (Sandbox Code Playgroud)

目录bin/被传递到deploy_jobfrom build_job


Von*_*onC 0

请注意,gitlab-org/gitlab-runner问题 2656提到:

但文档实际上讨论了这个限制:“在成功的最新管道中”:现在无法从当前运行的管道中获取工件。

谢谢 !
我认为文档确实应该更加明显地表明您需要整个管道完成才能访问工件,并且您不能在管道中使用它。

在我看来,此功能的明显用例是在服务器上部署,并且您希望服务器部署成为管道的一部分。

来自管道/工作工件/下载最新工件

要从工件下载单个文件,请使用以下 URL:

https://example.com/<namespace>/<project>/-/jobs/artifacts/<ref>/raw/<path_to_file>?job=<job_name>
Run Code Online (Sandbox Code Playgroud)

参见allpix-squared/allpix-squared示例。

它的.gitlab-ci.yml部署阶段调用具有正确路径的脚本:

sudo -u cvclicdp -i $RUNNER_LOCATION/.gitlab-ci.d/gitlab_deploy.sh $RUNNER_LOCATION $BUILD_PATH
Run Code Online (Sandbox Code Playgroud)