我有一个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
...
在此问题中,我提供了文件的必要部分。如您所见,该自动化旨在执行以下操作:
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
中指定的命令中的不同目录中时,我都会创建一个容器,那么文档中提到的项目工作区是什么? >
答案 0 :(得分:0)
问题解决了。我的问题显然是由于对GitLab以及跑步者如何工作缺乏了解。我所缺少的是,运行程序根据指定的Docker映像创建容器后,实际上将在容器中创建包含提交的文件夹。
因此,我在before_script
中拥有的东西完全没有用。感谢@ensc在评论中指出这一点。
问题来了,项目路径正是在容器中创建的目录,容器在指定的提交位置克隆了存储库。