Azure Function通过GitHub Action部署失败求助
以下是针对你遇到的部署错误的具体解决步骤:
验证发布配置文件有效性
确保从Azure Portal下载的是目标Function App的完整发布配置文件,没有遗漏或格式错误;同时检查GitHub仓库的AZURE_FUNCTIONAPP_PUBLISH_PROFILESecret是否完整粘贴,无换行、截断或多余字符。核对Function App名称与路径
确认env中的AZURE_FUNCTIONAPP_NAME与Azure上的Function App名称完全一致(注意虽然Azure资源名称不区分大小写,但完全匹配可避免潜在问题);验证AZURE_FUNCTIONAPP_PACKAGE_PATH指向的azure-function目录确实存在于仓库根目录,且包含Function App的核心文件(如function.json、package.json)。升级Azure Functions Action版本
你当前使用的Azure/functions-action@v1.5.1版本较旧,对Node.js 20的兼容性有限,建议升级到最新稳定版(如v4),新版本修复了大量部署相关的bug:- name: 'Run Azure Functions Action' uses: Azure/functions-action@v4 id: fa with: app-name: ${{ env.AZURE_FUNCTIONAPP_NAME }} package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }} publish-profile: ${{ secrets.AZURE_FUNCTIONAPP_PUBLISH_PROFILE }}切换运行环境为Ubuntu
将runs-on从windows-latest改为ubuntu-latest,避免Windows环境下的路径或Shell兼容性问题,同时修改依赖安装步骤的Shell为bash:jobs: build-and-deploy: runs-on: ubuntu-latest environment: dev steps: # ...其他步骤 - name: 'Resolve Project Dependencies Using Npm' shell: bash run: | cd "./${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }}" npm install npm run build --if-present npm run test --if-present手动配置应用设置
由于Action自动设置SCM_DO_BUILD_DURING_DEPLOYMENT和ENABLE_ORYX_BUILD返回405错误,可直接在Azure Portal的Function App「配置」-「应用设置」中添加这两个项,值设为false;也可在Action中通过app-settings-json参数显式指定,跳过自动设置逻辑:- name: 'Run Azure Functions Action' uses: Azure/functions-action@v4 id: fa with: app-name: ${{ env.AZURE_FUNCTIONAPP_NAME }} package: ${{ env.AZURE_FUNCTIONAPP_PACKAGE_PATH }} publish-profile: ${{ secrets.AZURE_FUNCTIONAPP_PUBLISH_PROFILE }} app-settings-json: '{"SCM_DO_BUILD_DURING_DEPLOYMENT": false, "ENABLE_ORYX_BUILD": false}'检查Kudu站点可用性
手动访问https://<你的Function App名称>.scm.azurewebsites.net,使用发布配置文件中的凭据登录,确认Kudu站点可正常访问,无防火墙或权限限制。
内容的提问来源于stack exchange,提问作者Michael S. Scherotter

