Azure Functions:部署到stage slot时代码意外同步至production slot
问题排查步骤
- 第一步:校验发布配置密钥是否错配
优先检查GitHub仓库中存储的secrets.AZURE_FUNCTIONAPP_PUBLISH_PROFILE_STAGE是否为stage槽的正确配置:进入Azure门户stage槽的概览页,下载发布配置文件,和你存储的STAGE密钥内容对比,确认其中的publishUrl、msdeploySite字段是否带有stage槽标识,避免出现stg密钥和production密钥填反、或是stg密钥误上传为production配置的情况。 - 第二步:检查槽专属应用设置配置
进入Function App的「配置」页,分别切换production和stage槽,检查以下核心配置是否勾选了「部署槽位设置」选项:WEBSITE_CONTENTAZUREFILECONNECTIONSTRINGWEBSITE_CONTENTSHAREWEBSITE_RUN_FROM_PACKAGE
上述配置如果未勾选「部署槽位设置」,修改任意一个槽的配置都会同步到另一个槽。尤其要确认两个槽的WEBSITE_CONTENTSHARE值不同,否则两个槽会读取同一个Azure文件共享里的代码,更新stage的代码时生产环境也会读到新文件。
- 第三步:校验部署日志的实际目标
打开触发问题的stage部署的GitHub Action运行日志,找到Run Azure Functions Action步骤的输出,检查日志中打印的部署目标槽名、站点域名是否为stage槽的对应值,确认部署动作确实是发往stg环境而非生产环境。 - 第四步:确认文件实际部署情况
分别进入两个槽的Kudu控制台(stage槽地址格式为https://<函数app名>-stg.scm.azurewebsites.net,生产槽不带后缀),进入/site/wwwroot目录核对代码文件的修改时间、内容,排除浏览器缓存、CDN缓存导致的误判。如果production槽的部署历史没有新的部署记录但文件已更新,基本可以判定是共享存储配置导致的问题。
对应解决方法
- 若为发布配置错配:重新下载stage槽的发布配置文件,更新GitHub仓库中对应的
AZURE_FUNCTIONAPP_PUBLISH_PROFILE_STAGE密钥即可。 - 若为应用设置未设槽专属:为两个槽分别配置独立的
WEBSITE_CONTENTSHARE,给上述三个核心配置勾选「部署槽位设置」,重新部署stage环境即可隔离两个槽的代码。
内容的提问来源于stack exchange,提问作者papakpmartin
相关产品推荐
相关产品推荐

