2016-07-01 15 views
14

Chciałbym użyć GitLab CI z plikiem .gitlab-ci.yml do uruchomienia różnych etapów z oddzielnymi skryptami. Pierwszy etap tworzy narzędzie, które musi być użyte na późniejszym etapie do wykonania testów. Zadeklarowałem wygenerowane narzędzie jako artefakt.GitLab: Jak mogę przekazywać artefakty na inny etap?

Jak mogę teraz wykonać to narzędzie w późniejszym etapie? Jaka jest prawidłowa ścieżka i jakie pliki będą wokół niej?

Na przykład pierwszy etap polega na tworzeniu artefaktów/bin/TestTool/TestTool.exe, a katalog zawiera inne wymagane pliki (biblioteki DLL i inne). Mój plik .gitlab-ci.yml wygląda następująco:

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

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

Build a testy wykonywane w systemie Windows, jeśli jest to istotne.

Odpowiedz

24

Musisz użyć dependencies:

Z tej fazie testowej config pobierze nieśledzone plików, które zostały utworzone na etapie produkcji:

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

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

próbowałem dodanie zależności zarówno pseudonim artystyczny (build) lub JobName (budować). dzieje się tak samo w twoim przykładzie. ale to nie zadziałało. Istnieje wiele dyskusji na temat korzystania z pamięci podręcznej/artefaktów, ale bez powodzenia. @ Peter – ravikanth

+2

Wreszcie udało się! Kluczową kwestią są tu zależności i artefakty. Tylko artefakty, które zostały uwzględnione, będą dostępne do wykorzystania w kolejnym etapie. Nie trzeba dodawać, bądź konserwatywny w stosunku do tego, co jest przesyłane. Powiedziałbym, użyj expire_in. W przeciwnym razie możemy skończyć marnując dużo miejsca. Te artefakty są przesyłane do programu gitlab w zadaniu kompilacji/etapie/kroku i pobierane w teście. – ravikanth