You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从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@v4
    • Azure/functions-action@v4

内容的提问来源于stack exchange,提问作者Gabriel Stancu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 04:45:25