Невозможно передать артефакты между заданиями в GitLab CI / CD - PullRequest
1 голос
/ 23 марта 2019

У меня есть проект 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/

Ничего не работает.Этот путь, который мы указываем, что это относительно ???В документации упоминается:

Вы можете использовать только пути, которые находятся в рабочей области проекта.

Что это значит?Я создаю контейнер каждый раз, когда я нажимаю и cd в разные каталоги в командах, которые я указываю в .gitlab-ci.yml, так что такое рабочая область проекта 1054 *, о которой упоминает документация?

1 Ответ

1 голос
/ 24 марта 2019

Проблема решена.Мой вопрос явно возник из-за недостатка понимания GitLab и того, как работает бегун.Чего мне не хватало, так это того факта, что бегунок после создания контейнера из указанного образа Docker фактически создаст в контейнере папку с фиксацией.

Бесполезное клонирование

Поэтому то, что я имею в before_script, совершенно бесполезно.И спасибо @ensc за указание этого в комментариях.

Путь к проекту

В связи с вопросом, путь к проекту - это в точности каталог, созданный в контейнере, в котором находится репозиторий.клонируется с указанным коммитом.

...