gitlab-ci.yml, before_script и артефакт

В документации gitlab-ci.yml говорится, что

before_script используется для определения команды, которая должна выполняться перед всеми заданиями, включая задания развертывания, но после восстановления артефактов.

Это говорит мне, что артефакт создается до запуска задания.

Но в документации по артефактам говорится, что

Артефакты - это список файлов и каталогов, которые прикрепляются к заданию после его успешного завершения.

Это говорит мне о том, что артефакт создается после завершения работы.

Получили противоречие. Может кто-нибудь объяснить, почему это не противоречие?

Я полагаю, они говорят об артефакте в предыдущем задании? Но я не знаю, как работают артефакт и работа, и могу ошибаться.


person Henry Yang    schedule 10.10.2018    source источник


Ответы (1)


Артефакты могут создаваться заданиями сборки на одном этапе и использоваться заданиями сборки на следующем этапе. Таким образом, before_script запускается после восстановления артефактов, созданных на предыдущем этапе, для текущего этапа.

Итак, следующий .gitlab-ci.yml

stages:
  - build
  - test

before_script:
  - echo "before_script"
  - ls

build_artifacts:
  stage: build
  tags:
    - docker
  script:
    - echo "build_artifacts"
    - touch build_output
  artifacts:
    paths:
      - build_output

test_artifacts:
  stage: test
  tags:
    - docker
  script:
    - echo "test_artifacts"

Дадим следующие результаты:

# build_artifacts job
$ echo "before_script"
before_script
$ ls
README.md
$ echo "build_artifacts"
build_artifacts
$ touch build_output
Uploading artifacts...
build_output: found 1 matching files               
Uploading artifacts to coordinator... ok            id=56026 responseStatus=201 Created token=xxxxzzzz
Job succeeded



# test_artifacts job
Downloading artifacts for build_artifacts (56026)...
Downloading artifacts from coordinator... ok        id=56026 responseStatus=200 OK token=xxxxzzzz
$ echo "before_script"
before_script
$ ls
README.md
build_output
$ echo "test_artifacts"
test_artifacts
Job succeeded

Как видите, задание test_artifacts загружает артефакты перед запуском before_script.

person rnstlr    schedule 25.10.2018