Azure Git部署.NET应用未包含最新提交的原因排查
这种情况我帮不少开发者踩过坑,看似部署成功但实际跑的还是旧代码,大概率是这几个细节没注意到:
分支配置不匹配:你本地推了最新提交到某个分支,但Azure部署中心里指定的部署分支根本不是这个!比如你推到了
main,但Azure还在盯着dev分支,或者分支名拼写错了(比如把main写成master)。去Azure门户的部署中心看看,确认部署分支和你推送的分支完全一致。部署触发器或缓存未更新:有时候Azure的自动部署触发器可能“睡过头”没检测到最新提交,或者缓存了旧的部署包。如果是手动部署的话,有没有不小心选了旧的提交ID?可以试试手动触发一次部署,特意选最新的提交,或者在部署中心里关掉再重新打开自动部署开关,清一下缓存。
Git子模块拖后腿:如果你的项目里包含子模块,子模块没更新到最新版本的话,Azure部署时也会拉取旧的子模块代码。本地先跑
git submodule update --remote把所有子模块更到最新,再推送到远程;同时检查Azure部署配置里有没有启用“拉取子模块”的选项,没开的话赶紧打开。自定义部署脚本硬编码了旧提交:如果你们用了自定义的部署脚本(比如
.deployment文件或者deploy.sh),里面有没有硬写某个旧的提交ID或者分支名?比如脚本里指定了git checkout abc123,那不管你推什么新提交,部署都会切到那个旧ID上。远程仓库分支存在保护或推送异常:虽然你说确认了代码,但有没有可能远程仓库的分支有保护规则,最新提交其实被拒绝了?或者本地推送时没推全(比如漏了
--tags或者某些大文件没推成功)?可以在远程仓库里直接看对应分支的最新提交ID,和你本地的对比一下,确保完全一致。Azure部署目录的符号链接异常:你提到
/site/deployments/里用的是旧提交ID,有可能是部署后的符号链接(比如current指向的还是旧目录)没更新。这种情况可以试试重启一下Azure App Service,或者手动删除旧的部署目录,再重新触发部署。
内容的提问来源于stack exchange,提问作者DB at PS

