Я впервые пытаюсь настроить CI / CD. Я следил за этим видео на YouTube: https://www.youtube.com/watch?v=Jav4vbUrqII, и я настроил свое приложение django, используя этот учебник по digitalocean: https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu-16-04.
Когда я вхожу в систему с помощью шпатлевки на промежуточном сервере и запуска исходной команды, он может найти и активировать виртуальную среду без проблем. Но когда он запускается со сценарием ниже, он сообщает мне, что такого файла не существует.
У меня была идея посмотреть, из какого рабочего каталога запускается скрипт:
$ echo $PWD
/builds/my username/dir
Когда я нахожусь в home user Я не могу найти / builds / my username / dir:
cron.log cron.sh dir1 data file.sql
Вопрос: Значит, мне не удается найти и активировать мою среду, потому что она находится в странном каталоге?
С помощью приведенного ниже сценария я хочу достичь:
- получить код в ветке dev
- запустить collectstatic / migrate
- перезапустить gunicorn, чтобы изменения вступают в силу
- тест (но в этом случае выведите строку - мне придется узнать, как проводить тесты позже).
Gitlab-ci.yml:
stages:
- build
- test
staging:
build:
stage: build
script:
- echo "Building"
- echo $PWD
- source dir1/env/bin/activate
- cd dir1/my project name/
- git fetch origin dev
- git pull origin dev
- python manage.py collectstatic
- export DJANGO_SETTINGS_MODULE=settings.production
- python manage.py migrate
- sudo systemctl restart gunicorn
test:
stage: test
script:
- echo "Testing"
Изменить: если вам интересно, почему я запускаю команду экспорта, это необходимо, потому что без нее я получаю следующую ошибку всякий раз, когда пытаюсь выполнить миграцию:
FATAL: password authentication failed for user "postgres"