You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Heroku部署Django应用未拉取最新Git提交的问题排查

Django部署Heroku Staging流水线构建失败问题

问题背景

部署Django应用到Heroku staging流水线时出现两个核心问题:

  1. 代码不更新问题:原因为settings.py中依赖python-decouple的SECRET_KEY配置报错,于是做了以下修改:
    • 注释掉settings.py中decouple的导入语句
    • 从requirements.txt移除python-decouple包
    • 改用dotenv加载环境变量,代码如下:
      from dotenv import load_dotenv
      load_dotenv()
      ...
      SECRET_KEY = str(os.getenv('SECRET_KEY'))
      
    已保存修改、提交并推送到staging流水线,但构建回溯仍指向旧代码(第27行):
    from decouple import config
    ...
    SECRET_KEY = config('SECRET_KEY')
    
  2. 静态文件收集失败:构建执行python manage.py collectstatic --noinput时,报错找不到vendor/bootswatch/default/bootstrap.min.css.map文件

可能的原因分析

一、Heroku不识别最新代码的原因

  • 本地提交未正确推送到远程staging分支:
    • 执行git branch -vv确认本地分支跟踪的远程分支是否为staging环境分支
    • 执行git log --oneline对比本地和远程提交记录,确保最新提交已推送;若未推送,执行git push staging <本地分支名>(确认无冲突后可加--force强制推送)
  • Heroku构建缓存残留:
    • 旧构建缓存可能保留了之前的代码和依赖,执行heroku builds:cache:purge -a <你的应用名称>清除缓存后重新触发构建
  • 提交遗漏关键文件:
    • 执行git status检查settings.py和requirements.txt是否有未提交的修改
    • 执行git show <最新提交哈希>查看该提交是否包含这两个文件的变更记录
  • 远程仓库地址错误:
    • 执行git remote -v确认heroku远程仓库地址是否对应staging环境,避免推送到了production等其他环境

二、collectstatic文件缺失的原因

  • 静态文件未提交到Git:
    • 检查本地是否存在vendor/bootswatch/default/bootstrap.min.css.map文件,若存在,查看.gitignore是否误将该文件或父目录排除,导致未被提交
  • 前端依赖安装不完整:
    • 若使用pip安装Bootswatch相关包,确认requirements.txt中包版本正确,且Heroku构建时已完成安装;若使用npm/yarn管理前端依赖,确认package.json中依赖正确,且构建脚本包含依赖安装步骤
  • 静态文件配置错误:
    • 检查settings.py中STATIC_ROOT、STATICFILES_DIRS、STATIC_URL的配置是否正确,确保collectstatic能正确找到静态文件来源路径

内容的提问来源于stack exchange,提问作者enoren5

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 11:47:35