gpt4 book ai didi

python - 将迁移作为 Django Web 应用程序的 MS Azure 应用程序服务发布管道的一部分运行

转载 作者:行者123 更新时间:2023-12-05 03:54:45 25 4
gpt4 key购买 nike

我想知道是否有人有将 python manage.py migrate 命令集成到 MS Azure 发布管道中的经验。该应用程序正在通过 DevOps 使用 CI/CD 管道进行部署。在发布管道部分,应用程序被部署到三个不同的阶段(开发、测试和生产)。我未能成功地将迁移命令集成到部署过程中。我尝试通过使用部署后内联脚本来实现此目的:

/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 documentation ,似乎正在运行 manage.pycollectstatic,但没有运行manage.py migrate

任何想法或建议将不胜感激!提前致谢。

最佳答案

由于我们希望能够在 Azure DevOps 上使用发布管道基础设施,因此我们无法使用 startUpCommand: python3.6 manage.py migrate 因为 devops 中没有与发布关联的 YAML 文件(至少到目前为止)。相反,最终起作用的是:

  1. 在项目存储库中创建脚本文件。我将该文件命名为 Procfile.sh。在此文件中,我添加了以下两行代码:
python manage.py migrate
python manage.py collectstatic --no-input
  • 在 Web 应用配置中添加指向该文件的新变量:
  •  {
    "name": "POST_BUILD_SCRIPT_PATH",
    "slotSetting": false,
    "value": "Procfile.sh"
    }

    如果您在脚本中运行collectstatic 命令,您还需要禁止 Oryx 引擎运行它:

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

    参见Oryx documentation了解更多详情。

    关于python - 将迁移作为 Django Web 应用程序的 MS Azure 应用程序服务发布管道的一部分运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60807485/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com