Подтвердить что ты не робот

Как я могу передать артефакты на другой этап?

Я хотел бы использовать GitLab CI с файлом .gitlab-ci.yml для запуска разных этапов с отдельными сценариями. На первом этапе создается инструмент, который должен использоваться на более позднем этапе для проведения тестов. Я объявил сгенерированный инструмент как артефакт.

Теперь, как я могу выполнить этот инструмент на более поздней стадии? Каков правильный путь и какие файлы будут вокруг него?

Например, на первом этапе строятся артефакты /bin/TestTool/TestTool.exe, и этот каталог содержит другие необходимые файлы (библиотеки DLL и другие). Мой файл .gitlab-ci.yml выглядит следующим образом:

releasebuild:
  script:
    - chcp 65001
    - build.cmd
  stage: build
  artifacts:
    paths:
      - artifacts/bin/TestTool/

systemtests:
  script:
    - chcp 65001
    - WHAT TO WRITE HERE?
  stage: test

Сборка и тесты выполняются в Windows, если это необходимо.

4b9b3361

Ответ 1

Используйте dependencies. С помощью этой стадии тестирования конфигурации загружаются неотслеживаемые файлы, которые были созданы на этапе сборки:

build:
  stage: build
  artifacts:
    untracked: true
  script:
    - ./Build.ps1

test:
  stage: test
  dependencies: 
    - build
  script:
    - ./Test.ps1

Ответ 2

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

image: ubuntu:18.04

stages:
  - build_stage
  - test_stage
  - deploy_stage

build:
  stage: build_stage
  script:
    - echo "building..." >> ./build_result.txt
  artifacts:
    paths:
    - build_result.txt
    expire_in: 1 week

unit_test:
  stage: test_stage
  script:
    - ls
    - cat build_result.txt
    - cp build_result.txt unittest_result.txt
    - echo "unit testing..." >> ./unittest_result.txt
  artifacts:
    paths:
    - unittest_result.txt
    expire_in: 1 week

integration_test:
  stage: test_stage
  script:
    - ls
    - cat build_result.txt
    - cp build_result.txt integration_test_result.txt
    - echo "integration testing..." >> ./integration_test_result.txt
  artifacts:
    paths:
    - integration_test_result.txt
    expire_in: 1 week

deploy:
  stage: deploy_stage
  script:
    - ls
    - cat build_result.txt
    - cat unittest_result.txt
    - cat integration_test_result.txt

enter image description here

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