GitHub Actions构建成功但网站未同步代码变更(部署问题)
问题描述
我在GitHub上托管的项目使用GitHub Actions构建流水线,流水线执行成功,但index.html的变更未同步到线上网站,具体情况如下:
- 构建流水线:可正常拉取仓库代码、执行构建及所有定义步骤
- 代码变更:已确认对
index.html的修改已提交并推送到GitHub仓库 - 网站未更新:访问线上网站时
index.html仍显示旧版本,已尝试清除浏览器缓存、重新部署,问题依旧
环境信息
- 部署配置:使用Azure CDN及自定义域名部署网站
- 构建流水线:Workflow YAML文件中使用
actions/checkout@v4、azure/login@v2,参考微软官方文档配置 - 已将Azure凭据添加为GitHub仓库密钥,但不确定
azure/login@v2是否正确调用;且部署静态站点到GitHub Pages时,该登录动作似乎多余
我的frontend.yml内容
name: deploy_frontend # 当frontend文件夹有推送时触发部署 on: push: branches: [ main ] paths: - 'frontend/**' jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: azure/login@v2 with: creds: ${{ secrets.AZURE_CREDENTIALS }} - name: Upload to blob storage uses: azure/CLI@v1 with: inlineScript: | az storage blob upload-batch --account-name azureresumefaizan --auth-mode key -d '$web' -s frontend/ - name: Purge CDN endpoint uses: azure/CLI@v1 with: inlineScript: | az cdn endpoint purge --content-paths "/*" --profile-name "azureresumefaizanshaikh" --name "azureresumefaizanshaikh" --resource-group "faizresume-rg" # Azure登出 - name: logout run: | az logout if: always()
排查与解决方案
1. 检查文件上传步骤是否真正生效
登录Azure门户,进入存储账户azureresumefaizan的$web容器,查看index.html的最后修改时间是否与流水线执行时间匹配:
- 如果文件未更新,确认
-s frontend/路径是否正确:若index.html在frontend的子目录(如dist),需将路径调整为对应子目录(例如frontend/dist/) - 移除
--auth-mode key参数:已通过azure/login完成身份验证,使用该参数会强制用密钥认证,可能因密钥权限或获取问题导致上传失败
2. 验证CDN缓存清除操作
- 查看GitHub Actions中
Purge CDN endpoint步骤的日志,确认清除操作是否成功。若有错误,检查--profile-name、--name、--resource-group的名称是否与Azure中的配置完全一致(注意大小写) - 手动在Azure门户执行CDN缓存清除,再访问网站测试。若手动操作后生效,说明流水线中的清除命令参数有误
3. 确认azure/login的有效性
- 查看流水线中
azure/login步骤的日志,确认是否显示登录成功。若登录失败,后续az命令会使用无权限的默认凭据,导致操作失败 - 检查GitHub仓库的
AZURE_CREDENTIALS密钥:确保是从Azure AD应用注册导出的完整JSON格式凭据,包含clientId、clientSecret、tenantId等必要信息
4. 其他排查点
- 检查Azure CDN的缓存策略:确认是否对
index.html设置了过长的缓存时间,或未根据文件修改时间更新缓存 - 确认存储账户静态网站的默认文档:确保
$web容器的默认文档设置为index.html,避免加载旧的默认文件
内容的提问来源于stack exchange,提问作者Faizan Shaikh
相关产品推荐
相关产品推荐

