2016-07-01 9 views
14

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

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

Например, первый этап создает артефакты/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, если это актуально.

ответ

24

Вы должны использовать dependencies:

С этим тестовой конфигурацией этапом скачивает неотслеживаемые файлы, которые были созданы на этапе сборки:

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

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

Я попытался добавлением зависимостей с обеими сценических именем (сборки) или JobName (сборка). в вашем примере одинаково. но это не сработало. Существует много дискуссий о том, как использовать кеш/артефакты, но пока не везет. @peter – ravikanth

+2

Наконец-то он заработал! Ключевым моментом здесь является использование зависимостей вместе с артефактами. Только предметы, которые были включены, будут доступны для потребления на следующем этапе. Разумеется, будьте консервативны в отношении того, что загружается. Я бы сказал, используйте expire_in. В противном случае мы могли бы потратить много времени на хранение. Эти артефакты загружаются в gitlab в задании сборки/этапе/шаге и загружаются в тесте. – ravikanth

Смежные вопросы