我想知道是否有人有经验集成 python manage.py migrate
将命令导入msazure发布管道。正在通过devops使用ci/cd管道部署该应用程序。在发布管道部分,应用程序被部署到三个不同的阶段(dev、test和prod)。我未能成功地将migrate命令集成到部署过程中。我曾尝试通过使用部署后内联脚本来实现这一点:
/antenv/bin/python /home/site/wwwroot/manage.py collectstatic
/antenv/bin/python /home/site/wwwroot/manage.py migrate
如果我在沙盒环境中通过ssh运行上述命令,它们将成功执行。但是,将它们作为部署后脚本包含在发布管道中会引发以下错误:
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条答案
按热度按时间mcdcgff01#
在使用django时,通常需要使用
manage.py migrate
在部署应用程序代码之后。您可以添加startUpCommand
为此使用部署后脚本:详情请参阅本正式文件。
z5btuh9x2#
因为我们希望能够在azuredevops上使用发布管道基础设施,所以我们不能使用
startUpCommand: python3.6 manage.py migrate
因为devops中没有与发行版相关联的yaml文件(至少到目前为止)。相反,最终奏效的是:在项目存储库中创建脚本文件。我给文件命名了
Procfile.sh
. 在此文件中,我添加了以下两行代码:在webapp配置中添加指向该文件的新变量:
如果您正在脚本中运行collectstatic命令,则您还需要禁用oryx引擎来运行它:
有关详细信息,请参阅oryx文档。