2016-07-01 16 views
14

Mi piacerebbe utilizzare GitLab CI con il file .gitlab-ci.yml per eseguire diverse fasi con script separati. Il primo stadio produce uno strumento che deve essere utilizzato in una fase successiva per eseguire i test. Ho dichiarato lo strumento generato come artefatto.GitLab: come posso passare artefatti in un'altra fase?

Ora come posso eseguire lo strumento in una fase successiva? Qual è il percorso corretto e quali file ci saranno attorno ad esso?

Ad esempio, la prima fase crea le risorse utente/bin/TestTool/TestTool.exe e quella directory contiene altri file richiesti (DLL e altri). Il mio file .gitlab-ci.yml assomiglia a questo:

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

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

La build e test eseguiti su Windows se questo è rilevante.

risposta

24

Devi usare il dependencies:

Con questa fase di test di configurazione scaricherà i file non monitorate che sono stati creati durante la fase di costruzione:

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

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

Ho provato ad aggiungere le dipendenze sia con stagename (build) o job name (costruire). capita di essere lo stesso nel tuo esempio. ma questo non ha funzionato. C'è molta discussione sull'utilizzo di cache/artefatti, ma senza fortuna ancora. @peter – ravikanth

+2

Finalmente ha funzionato! Il punto chiave qui è che le dipendenze dovrebbero essere usate insieme agli artefatti. Solo gli artefatti inclusi erano disponibili per il consumo nella fase successiva. Inutile dire che sii prudente su ciò che viene caricato. Direi usare expire_in. Altrimenti potremmo finire per sprecare molto spazio. Questi artefatti vengono caricati su gitlab nel processo di creazione/fase/passaggio e scaricati nel test. – ravikanth