запуск миграций как часть конвейера выпуска службы приложения MS Azure для веб-приложения Django - PullRequest
2 голосов
/ 23 марта 2020

Мне интересно, есть ли у кого-нибудь опыт интеграции команды python manage.py migrate в конвейер выпуска MS Azure. Приложение разворачивается с использованием конвейера CI / CD через DevOps. В части конвейера выпуска приложение развертывается на трех разных этапах (dev, test и prod). Мне не удалось интегрировать команду migrate в процесс развертывания. Я попытался добиться этого с помощью встроенного сценария после развертывания:

/antenv/bin/python /home/site/wwwroot/manage.py collectstatic
/antenv/bin/python /home/site/wwwroot/manage.py migrate

Если я запускаю вышеупомянутые команды в среде песочницы через S SH, они выполняются успешно. Однако включение их в конвейер выпуска в качестве сценария после развертывания приводит к следующей ошибке:

2020-03-22T19:00:32.8641689Z Standard error from script: 
2020-03-22T19:00:32.8727872Z ##[error]/home/site/VSTS_PostDeployment_1321584903618191/kuduPostDeploymentScript.sh: 1: /home/site/VSTS_PostDeployment_1321584903618191/kuduPostDeploymentScript.sh: /antenv/bin/python: not found
/home/site/VSTS_PostDeployment_1321584903618191/kuduPostDeploymentScript.sh: 2: /home/site/VSTS_PostDeployment_1321584903618191/kuduPostDeploymentScript.sh: /antenv/bin/python: not found

2020-03-22T19:01:34.3372528Z ##[error]Error: Unable to run the script on Kudu Service. Error: Error: Executed script returned '127' as return code. Error: /home/site/VSTS_PostDeployment_1321584903618191/kuduPostDeploymentScript.sh: 1: /home/site/VSTS_PostDeployment_1321584903618191/kuduPostDeploymentScript.sh: /antenv/bin/python: not found
/home/site/VSTS_PostDeployment_1321584903618191/kuduPostDeploymentScript.sh: 2: /home/site/VSTS_PostDeployment_1321584903618191/kuduPostDeploymentScript.sh: /antenv/bin/python: not found

Я также попытался запустить указанный выше встроенный сценарий как:

manage.py collectstatic
manage.py migrate

Но для безрезультатно.

Основываясь на документации Oryx , создается впечатление, что manage.py collectstatic запускается, но не manage.py migrate

Любые идеи или предложения будут очень приветствоваться! Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 27 марта 2020

Поскольку мы хотим иметь возможность использовать инфраструктуру конвейера релиза в Azure DevOps, мы не можем использовать startUpCommand: python3.6 manage.py migrate, потому что нет никакого файла YAML, связанного с выпуском в devops (по крайней мере, пока). Вместо этого наконец-то сработало:

  1. Создание файла сценария в репозитории проекта. Я назвал файл Procfile.sh. В этом файле я добавил следующие две строки кода:
python manage.py migrate
python manage.py collectstatic --no-input
Добавьте в конфигурацию веб-приложения новую переменную, которая указывает на этот файл:
 {
    "name": "POST_BUILD_SCRIPT_PATH",
    "slotSetting": false,
    "value": "Procfile.sh"
  }

Если вы запускаете команду collectstati c в своем скрипте, вам нужно отключить Oryx. двигатель также запускается:

{
    "name": "DISABLE_COLLECTSTATIC",
    "slotSetting": false,
    "value": "true"
  },

Подробнее см. Документация Oryx .

0 голосов
/ 24 марта 2020

При использовании Django обычно требуется перенести модели данных с помощью manage.py migrate после развертывания кода приложения. Для этого вы можете добавить startUpCommand с помощью сценария после развертывания:

startUpCommand:  python3.6 manage.py migrate

Подробнее см. В этом официальном документе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...