2015-07-25 18 views
12

Mam następującą konfigurację jako .gitlab-ci.yml , ale dowiedziałem się, że po pomyślnym przejściu etapu budowy (który utworzył virtualenv o nazwie venv), wydaje się ten w teście dostaniesz zupełnie nowe środowisko (w katalogu nie ma żadnego katalogu venv). Zastanawiam się więc, czy powinienem wstawić skrypt instalacyjny przed skryptem before_script, aby działał w każdym etapie (build/test/deploy). Czy to właściwy sposób?test po kompilacji działałby w nowym środowisku na 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

Mam zasadniczo ten sam problem. Otworzyłem problem na https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues/124 – pholz

Odpowiedz

1

pracy Gitlab CI powinien być niezależny, ponieważ mogą one działać na różnych biegaczy. To nie problem. Istnieją dwa sposoby przesyłania plików między etapami:

  • Właściwy sposób. Używanie artefaktów.
  • Niepoprawny sposób. Korzystanie z pamięci podręcznej. Z kluczem podręcznym "hack". Nadal potrzebuję tego samego biegacza.

Tak, tak, zgodnie z metodą gitlab, że wszystko, od czego zależy twoja praca przed scenariuszem. Przykładem

Artefakty:

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

przykład Cache:

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

Dla prawidłowego środowiska bieżącą Moim przy użyciu docker z obrazem zawierającym apt-get zależności. Używaj artefaktów do przekazywania wyników pracy między zadaniami. Zauważ, że artefakt został również przesłany do interfejsu sieciowego gitlab i jest w stanie je pobrać. Więc jeśli są dość ciężkie, używaj małych expire_in czasu, do usuwania ich po wykonaniu wszystkich zadań.

+0

Dziękuję za odpowiedź. –

+0

Nie udało mi się połączyć "artefaktów" w 'job_test',' job_install' powyżej – user3313834