无法在GitLab CI / CD

时间:2019-03-23 12:03:54

标签: git docker gitlab gitlab-ci

我有一个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://xxx@github.com/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映像。

问题

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

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

问题排查

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

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

没有任何效果。我们指定的这条路径,它相对于什么? documentation提到:

  

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

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

1 个答案:

答案 0 :(得分:0)

问题解决了。我的问题显然是由于对GitLab以及跑步者如何工作缺乏了解。我所缺少的是,运行程序根据指定的Docker映像创建容器后,实际上将在容器中创建包含提交的文件夹。

无用的克隆

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

项目路径

问题来了,项目路径正是在容器中创建的目录,容器在指定的提交位置克隆了存储库。