无法在GitLab CI / CD中的作业之间传递工件

问题描述 投票:0回答:1

我有一个GitLab项目,我的.gitlab-ci.yml看起来像这样:

stages:
  - build
  - deploy

image: registry.gitlab.com/myuser/myproj/ubuntuxenial:v1

before_script:
  - cd /home
  - mkdir docker
  - cd docker
  - git clone "https://[email protected]/myuser/myproj.git" repo
  - cd repo

render_site:
  stage: build
  artifacts:
    name: "$CI_JOB_NAME-$CI_COMMIT_REF_NAME--$CI_JOB_STAGE-$CI_COMMIT_REF_NAME"
    expire_in: 1 week
    paths:
      - home/docker/repo/
  script:
    - Rscript build.R

...

我已在此问题的上下文中提供了文件的基本部分。如您所见,此自动化旨在执行以下操作:

  1. 克隆存储库。
  2. 在存储库中调用构建命令(我正在使用R)。此步骤将在存储库文件夹中生成一些输出文件。
  3. 确保发布工件,我想发布整个存储库repo文件夹的内容。

注意我已将GitLab设置为使用Docker镜像。我正在使用我在我的注册表中上传的Unix映像。

Problem

问题发生在第一份工作:render_site。一切顺利,执行命令,所有构建都很好。但是,该任务的日志中的最后一行是:

Uploading artifacts...
WARNING: home/docker/repo/: no matching files      
ERROR: No files to upload

Troubleshooting

我理解问题出在我在.gitlab-ci.yml提供的路径中。我尝试过以下方法:

  • home/docker/repo/
  • /home/docker/repo/
  • repo/

什么都行不通。我们指定的这条路径,它与???有什么关系? documentation提到:

您只能使用项目工作区内的路径。

这是什么意思?我每次推动时都会创建一个容器,并且我在cd中指定的命令中将.gitlab-ci.yml放入不同的目录中,那么文档提到的项目工作区是什么?

git docker gitlab gitlab-ci
1个回答
1
投票

问题解决了。我的问题显然是因为对GitLab缺乏了解以及跑步者如何运作。我缺少的是,在从指定的Docker镜像创建容器之后,运行器实际上将在容器中创建具有提交的文件夹。

Useless cloning

因此,我在before_script所拥有的东西是完全没用的。感谢@ensc在评论中指出这一点。

Project path

回到这个问题,项目路径正是在容器中创建的目录,在该容器中,在指定的提交中克隆了存储库。

© www.soinside.com 2019 - 2024. All rights reserved.