GitLab CI bewahrt die Umgebung zwischen den Erstellungsphasen

Ich arbeite an einem Python-Projekt und benutze miniconda um meine Umgebung zu verwalten. Ich verwende GitLab für CI mit der folgenden Runner-Konfiguration

stages:
  - build
  - test 

build:
  stage: build
  script:
    - if hash $HOME/miniconda/bin/conda 2>/dev/null; 
      then
         export PATH="$HOME/miniconda/bin:$PATH";
      else
        wget http://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh -O miniconda.sh;
        bash miniconda.sh -b -p $HOME/miniconda;
        export PATH="$HOME/miniconda/bin:$PATH";
      fi
    - conda update --yes conda

test:
  stage: test
  script:
    - conda env create --quiet --force --file environment.yml
    - source activate myenv
    - nosetests --with-coverage --cover-erase --cover-package=mypackage --cover-html
    - pylint --reports=n tests/test_final.py
    - pep8 tests/test_final.py
    - grep pc_cov cover/index.html | egrep -o "[0-9]+\%" | awk '{ print "covered " $1;}'

Ich habe (fälschlicherweise) angenommen, dass meinbuild stage würde die richtige Umgebung einrichten, in der ich mein @ ausführen könntest Bühne. Anschauendiese Frag unddieses GitLab-Problem Ich sehe da

Jeder in .gitlab-ci.yml definierte Job wird als separater Build ausgeführt (wobei davon ausgegangen wird, dass kein Verlauf vorhanden ist).

Aber die Alternative, alles in einer Stufe zusammenzufassen, ist nicht attraktiv

stages:
  - test 

test:
  stage: test
  script:
    - if hash $HOME/miniconda/bin/conda 2>/dev/null; 
      then
         export PATH="$HOME/miniconda/bin:$PATH";
      else
        wget http://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh -O miniconda.sh;
        bash miniconda.sh -b -p $HOME/miniconda;
        export PATH="$HOME/miniconda/bin:$PATH";
      fi
    - conda update --yes conda
    - conda env create --quiet --force --file environment.yml
    - source activate myenv
    - nosetests --with-coverage --cover-erase --cover-package=mypackage --cover-html
    - pylint --reports=n tests/test_final.py
    - pep8 tests/test_final.py
    - grep pc_cov cover/index.html | egrep -o "[0-9]+\%" | awk '{ print "covered " $1;}'

Die einzige andere Option, die mir in den Sinn kommt, besteht darin, die Schritte zum Erstellen der Umgebung in ein @ zu setze before_script stage, aber es scheint überflüssig, die gleiche Umgebung vor jeder Stufe fortlaufend neu zu erstellen.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage