从GitHub部署Azure Functions后函数未显示问题求助
Azure Functions从Azure DevOps迁移至GitHub后,Azure门户中函数消失问题排查
问题概述
将企业项目从Azure DevOps迁移至GitHub,Web应用迁移正常,但Azure Functions部署后出现异常:流水线执行成功、应用可正常运行,但Azure门户中函数应用下的函数列表为空。
环境与已确认信息
- 使用** .NET 8 Isolated**模式,已确认项目、Azure门户函数应用、GitHub工作流环境均配置为该版本
- 个人GitHub账号下的测试项目,通过开发中心关联GitHub后函数可正常显示;企业项目位于GitHub组织下,仅修改了自动生成工作流中的函数应用根目录路径(测试项目同样做了此修改)
- 测试与企业项目均启用基础认证
- Visual Studio手动部署企业项目后,函数可正常显示,排除代码启动/运行问题
- Kudu中查看应用内容无异常
当前使用的GitHub工作流
name: Build and deploy dotnet core app to Azure Function App - test-function-gs-ita on: push: branches: - main workflow_dispatch: env: AZURE_FUNCTIONAPP_PACKAGE_PATH: './GS-App/GS-App/' # set this to the path to your web app project, defaults to the repository root DOTNET_VERSION: '8.0.x' # set this to the dotnet version to use jobs: build-and-deploy: runs-on: windows-latest steps: - name: 'Checkout GitHub Action' uses: actions/checkout@v4 - name: Setup DotNet ${{ env.DOTNET_VERSION }} Environment uses: actions/setup-dotnet@v1 with: dotnet-version: ${{ env.DOTNET_VERSION }} - name: 'Resolve Project Dependencies Using Dotnet' shell: pwsh run: | pushd './${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}' dotnet build --configuration Release --output ./output popd - name: 'Run Azure Functions Action' uses: Azure/functions-action@v1 id: fa with: app-name: 'test-function-gs' slot-name: 'Production' package: '${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}/output' publish-profile: ${{ secrets.AZUREAPPSERVICE_PUBLISHPROFILE }}
企业项目结构
根目录存放解决方案文件,需部署的6个函数应用位于./src/Providers/Provider2路径下:
./src/Providers/Provider2/App1./src/Providers/Provider2/App2./src/Providers/Provider2/App3./src/Providers/Provider2/App4./src/Providers/Provider2/App5./src/Providers/Provider2/App6
排查方向与解决方案建议
1. 部署路径与构建输出验证
- 修正
AZURE_FUNCTIONAPP_PACKAGE_PATH配置:企业项目的函数应用路径为./src/Providers/Provider2/AppX(X为1-6),需针对每个函数应用的部署工作流调整该路径,确保指向正确的项目根目录 - 替换构建命令为
dotnet publish:dotnet build仅生成编译后的程序集,dotnet publish会生成包含所有依赖项的完整部署包,更适合Azure Functions部署:pushd "./${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}" dotnet publish --configuration Release --output ./output popd - 添加目录验证步骤:在工作流中加入以下命令,确认部署包内容完整性:
Get-ChildItem -Path "${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}/output" -Recurse
2. GitHub组织权限与身份验证检查
- 确认发布配置文件有效性:重新下载企业项目目标函数应用的发布配置文件,更新到GitHub组织仓库的Secrets中,避免权限过期或配置错误
- 检查Azure角色权限:确保GitHub Actions使用的服务主体(或发布配置文件对应的身份)拥有目标函数应用的
Website Contributor或更高权限,对比个人账号的权限配置
3. Azure Functions配置与日志排查
- 验证部署模式:检查Azure门户中函数应用的
部署中心设置,若使用运行从包文件模式,需确保部署包结构符合要求;若为传统部署模式,确认包解压后目录结构正确 - 核对环境配置:确认Azure函数应用的
FUNCTIONS_EXTENSION_VERSION设置为~4(对应.NET 8 Isolated),FUNCTIONS_WORKER_RUNTIME设置为dotnet-isolated - 查看启动日志:在Azure门户的
日志流或Application Insights中搜索函数启动相关日志,排查是否存在函数加载失败的错误(如依赖缺失、配置文件错误等)
4. GitHub Actions工具版本升级
- 升级Actions组件到最新稳定版:当前使用的
actions/setup-dotnet@v1和Azure/functions-action@v1版本较旧,存在兼容性风险,建议替换为:actions/setup-dotnet@v4Azure/functions-action@v4
内容的提问来源于stack exchange,提问作者Gabriel Stancu
相关产品推荐
相关产品推荐

