python—作为django web应用程序的ms azure应用程序服务发布管道的一部分运行迁移

t98cgbkg  于 2021-06-21  发布在  Kudu
关注(0)|答案(2)|浏览(402)

我想知道是否有人有经验集成 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 任何意见或建议将不胜感激!提前谢谢。

mcdcgff0

mcdcgff01#

在使用django时,通常需要使用 manage.py migrate 在部署应用程序代码之后。您可以添加 startUpCommand 为此使用部署后脚本:

startUpCommand:  python3.6 manage.py migrate

详情请参阅本正式文件。

z5btuh9x

z5btuh9x2#

因为我们希望能够在azuredevops上使用发布管道基础设施,所以我们不能使用 startUpCommand: python3.6 manage.py migrate 因为devops中没有与发行版相关联的yaml文件(至少到目前为止)。相反,最终奏效的是:
在项目存储库中创建脚本文件。我给文件命名了 Procfile.sh . 在此文件中,我添加了以下两行代码:

python manage.py migrate
python manage.py collectstatic --no-input

在webapp配置中添加指向该文件的新变量:

{
    "name": "POST_BUILD_SCRIPT_PATH",
    "slotSetting": false,
    "value": "Procfile.sh"
  }

如果您正在脚本中运行collectstatic命令,则您还需要禁用oryx引擎来运行它:

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

有关详细信息,请参阅oryx文档。

相关问题