2015-07-25 18 views
12

Ho la seguente configurazione come .gitlab-ci.yml ma ho scoperto dopo aver superato con successo la fase di creazione (che creerebbe un virtualenv chiamato venv), sembra quello in fase di test si otterrebbe un ambiente nuovo di zecca (c'è nessuna directory venv affatto). Quindi mi chiedo se dovessi mettere lo script di installazione in before_script per farlo funzionare in ogni fase (build/test/deploy). È un modo giusto per farlo?test dopo build verrebbe eseguito in un nuovo ambiente su gitlab-ci

before_script: 
    - uname -r 

types: 
    - build 
    - test 
    - deploy 

job_install: 
    type: build 
    script: 
    - apt-get update 
    - apt-get install -y libncurses5-dev 
    - apt-get install -y libxml2-dev libxslt1-dev 
    - apt-get install -y python-dev libffi-dev libssl-dev 
    - apt-get install -y python-virtualenv 
    - apt-get install -y python-pip 
    - virtualenv --no-site-packages venv 
    - source venv/bin/activate 
    - pip install -q -r requirements.txt 
    - ls -al 
    only: 
    - master 

job_test: 
    type: test 
    script: 
    - ls -al 
    - source venv/bin/activate 
    - cp crawler/settings.sample.py crawler/settings.py 
    - cd crawler 
    - py.test -s -v 
    only: 
    - master 

adasd

+2

Ho essenzialmente lo stesso problema. Ho aperto un problema su https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues/124 – pholz

risposta

1

lavori Gitlab CI dovrebbero essere indipendenti, perché potrebbero funzionare su diversi corridori. Non è un problema. Ci sono due modi per passare i file tra le fasi:

  • La strada giusta. Usando artefatti.
  • Il modo sbagliato. Utilizzo della cache. Con la chiave cache "hack". Ancora bisogno dello stesso corridore.

Quindi sì, si suppone dal modo gitlab di avere tutto il proprio lavoro dipende prima della sceneggiatura.

Artefatti esempio:

artifacts: 
    when: on_success 
    expire_in: 1 mos 
    paths: 
    - some_project_files/ 

esempio cache:

cache: 
    key: "$CI_BUILD_REF_NAME" 
    untracked: true 
    paths: 
    - node_modules/ 
    - src/bower_components/ 

Per l'ambiente esecuzione corretta Io suggerisco di usare finestra mobile con un'immagine contenente apt-get dipendenze. E utilizzare gli artefatti per il passaggio dei risultati del lavoro tra i lavori. Si noti che artefact viene anche caricato nell'interfaccia Web di gitlab e può essere scaricato. Quindi, se sono abbastanza pesanti, usate una piccola expire_in time, per rimuoverli dopo aver fatto tutti i lavori.

+0

Grazie per la risposta. –

+0

Non sono riuscito a mettere insieme 'artefacts:' nel 'job_test',' job_install' sopra – user3313834

Problemi correlati