Тест после сборки будет работать в новой среде на gitlab-ci
У меня есть следующая конфигурация как .gitlab-ci.yml
но я узнал после успешного прохождения этапа сборки (который
создаст виртуальный узел, называемый venv), кажется, что
на тестовом этапе вы получите совершенно новую среду (есть
нет каталога venv вообще). Так что я должен поставить настройку
script в before_script, чтобы он выполнялся на каждой фазе (build/test/deploy). Правильно ли это сделать?
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
Ответы
Ответ 1
Работы Gitlab CI должны быть независимыми, потому что они могут работать на разных бегунах. Это не проблема. Существует два способа передачи файлов между этапами:
- Правильный путь. Использование артефактов.
- Неправильно. Использование кеша. С ключом кэша "взломать". По-прежнему нужен тот же самый бегун.
Итак, да, предположил gitlab, чтобы все, от вашей работы зависит, до script.
Пример артефактов:
artifacts:
when: on_success
expire_in: 1 mos
paths:
- some_project_files/
Пример кэша:
cache:
key: "$CI_BUILD_REF_NAME"
untracked: true
paths:
- node_modules/
- src/bower_components/
Для правильной рабочей среды я предлагаю использовать докер с изображением, содержащим зависимости apt-get. И используйте артефакты для передачи результатов работы между заданиями. Обратите внимание, что артефакт также загружается на веб-интерфейс gitlab и может его загрузить. Поэтому, если они довольно сильно используют небольшое время expire_in, для их удаления после выполнения всех заданий.