2015-07-25 33 views
12

üzerinde yeni bir ortamda çalışabilirim .gitlab-ci.yml olarak aşağıdaki yapılandırmaya sahibim ama başarılı bir şekilde inşa aşamasını geçtikten sonra öğrendim ( venv adlı bir virtualenv yaratacaktır) Test aşamasında yepyeni bir ortam elde edersiniz ( no venv directory). Bu yüzden, her bir aşamada (build/test/deploy) çalışacağı için, setup_121b dosyasında setup betiğini koymalıyım. Bunu yapmak için doğru bir yol mu? Farklı rayları üzerinde çalışabilecekleri içintest yaptıktan sonra 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

Esasen aynı sorun var. Https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues/124 – pholz

cevap

1

Gitlab CI işler bağımsız olması gerekiyordu. Bu sorun değil. Dosyalar arasında geçiş yapmanın iki yolu vardır:

  • Doğru yol. Artefacts kullanma.
  • Yanlış yol. Önbellek kullanma. Önbellek "hack" ile. Hala aynı koşucuya ihtiyacım var.

Yani evet, işiniz önce komut bağlıdır her şeye sahip gitlab arada sözde.

eserler örnek:

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

Önbellek örnek: bağımlılıkları apt-get içeren görüntü ile i liman işçisi kullanmanızı öneririz doğru koşu çevre için

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

. Ve iş sonuçları arasında iş sonuçlarını geçirmek için eserler kullanın. Artefact'ın gitlab web arayüzüne de yüklendiğini ve bunları indirebildiğini unutmayın. Bu nedenle, eğer tüm işler bittikten sonra onları kaldırmak için oldukça ağır küçük expire_in süresi kullanılıyorlarsa.

+0

'da bir sorun açtım Cevabınız için teşekkürler. –

+0

Yukarıdaki "job_test", "job_install" öğelerindeki artifact'leri bir araya getirmeyi başaramadım. – user3313834

İlgili konular