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

时间:2019-06-23 06:31:15

标签: gitlab gitlab-ci

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

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

文档中未提及下载工件的路径。 if

2 个答案:

答案 0 :(得分:1)

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

目录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