Gitlab: Как использовать артефакты в последующих заданиях после сборки - PullRequest
2 голосов
/ 23 июня 2019

Я пытался создать конвейер GitLab CI / CD для развертывания моего MEAN-приложения.У меня есть три этапа: 1. тестирование 2. сборка 3. развертывание

На этапе сборки есть задание build_angular, которое генерирует артефакт.Теперь я хочу использовать эти артефакты на следующем этапе, т.е. развернуть.Задание развертывания говорит мне, что оно загрузило артефакт (изображение было прикреплено), но теперь я хочу извлечь этот артефакт, но я не знаю, где загружается артефакт.

Путь, куда загружается артефакт, нигде в документации не упоминается.if

Ответы [ 2 ]

1 голос
/ 24 июня 2019

GitLab очищает рабочий каталог между двумя последующими заданиями.Вот почему вы должны использовать artifacts и dependencies для передачи файлов между заданиями.

Когда задание «развертывание» сообщает, что артефакты сборки были загружены, это просто означает, что они были воссозданы, поскольку онибыли раньше.Расположение загруженных артефактов совпадает с расположением путей артефакта (как объявлено в файле .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.

0 голосов
/ 23 июня 2019

Обратите внимание, что gitlab-org/gitlab-runner выпуск 2656 упоминает:

Но документация говорит об этом ограничении на самом деле: «в последнем успешном конвейере»: нетТеперь можно получить артефакты из работающего в настоящий момент конвейера.

Спасибо!
Я думаю, что документация действительно должна сделать более очевидным, что вам нужен весь конвейер для завершения, прежде чем артефакт станет доступен ичто вы не можете использовать это в конвейере.

Мне показалось, что очевидным вариантом использования этой функции будет развертывание на сервере и что вы бы хотели, чтобы развертывание сервера было частью конвейера.

Это произойдет 1019 *

Для загрузки одного файла из артефактов используйте следующий URL:

https://example.com/<namespace>/<project>/-/jobs/artifacts/<ref>/raw/<path_to_file>?job=<job_name>

См.

allpix-squared/allpix-squared в качестве примера.

Его .gitlab-ci.yml этап развертывания вызывает сценарий с правильным путем:

sudo -u cvclicdp -i $RUNNER_LOCATION/.gitlab-ci.d/gitlab_deploy.sh $RUNNER_LOCATION $BUILD_PATH
...