gitlab-ci.yml, before_script и артефакт - PullRequest
0 голосов
/ 10 октября 2018

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

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

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

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

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

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

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

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

1 Ответ

0 голосов
/ 25 октября 2018

Артефакты могут создаваться заданиями сборки из одного этапа и использоваться заданиями сборки из следующего этапа.Таким образом, 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.

...