GitHub Action显示部署成功,但Azure Web App未部署文件导致应用无法运行
GitHub Action显示部署成功,但Azure Web App未部署文件导致应用无法运行
我明白这种日志全绿但实际没部署的情况有多头疼——明明每一步都显示成功,结果服务器上连个.py文件都找不到,确实让人摸不着头脑。咱们先从你提供的GitHub Action配置里找找问题所在:
核心问题:部署步骤未指定要部署的内容
你的azure/webapps-deploy@v3动作没有告诉Azure要部署哪些文件!这个动作不会自动扫描当前工作目录的内容,必须通过package或path参数明确指定部署源。这就是为什么日志显示成功,但服务器上没有任何文件的根本原因。
次要问题:打包与解压的冗余与不合理
- 打包命令包含冗余目录:你在build阶段用
zip release.zip ./* -r打包时,会把venv目录也包含进去(虽然你在上传 artifact 时排除了venv,但release.zip里已经有这个目录了),既浪费空间又可能导致部署问题。 - 解压步骤完全冗余:其实你可以直接部署build阶段生成的zip包,不需要在deploy阶段手动解压,这样既高效又能避免路径错误。
修正后的GitHub Action配置
优化Build阶段的打包命令
把打包命令改成下面这样,直接排除venv目录,避免冗余内容:
- name: Zip artifact for deployment run: zip -r release.zip . -x "venv/*"
修正Deploy阶段的部署步骤
去掉不必要的解压步骤,直接指定要部署的zip包:
deploy: runs-on: ubuntu-latest needs: build environment: name: 'Production' url: ${{ steps.deploy-to-webapp.outputs.webapp-url }} permissions: id-token: write #This is required for requesting the JWT steps: - name: Download artifact from build job uses: actions/download-artifact@v4 with: name: python-app # 移除不必要的unzip步骤 - name: Login to Azure uses: azure/login@v2 with: client-id: ${{ secrets.xx}} tenant-id: ${{ secrets.xx}} subscription-id: ${{ secrets.xx}} - name: 'Deploy to Azure Web App' uses: azure/webapps-deploy@v3 id: deploy-to-webapp with: app-name: 'fast-api-port' slot-name: 'Production' package: release.zip # 关键:明确指定要部署的zip包!
额外排查步骤(如果修正后仍有问题)
- 检查文件是否存在:在deploy阶段加一个
ls -la步骤,确认下载的artifact是否存在:- name: Verify downloaded artifact run: ls -la - 查看Azure部署日志:登录Azure Portal,进入你的Web App,在「部署中心」→「日志」里查看更详细的部署记录,Azure会在这里显示实际部署了多少文件、有没有报错。
- 确认启动命令:如果文件成功部署但应用仍无法运行,检查Web App的「配置」→「通用设置」里的启动命令是否正确(比如
gunicorn main:app这类FastAPI的启动命令)。
备注:内容来源于stack exchange,提问作者Thomas Segato
相关产品推荐
相关产品推荐

