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

Bitbucket Pipeline发布Azure Functions提示找不到项目根host.json

问题描述

在Bitbucket Pipeline中配置Azure Functions发布流程时出现路径识别问题:

  • 本地终端执行func azure functionapp publish "" --csharp命令可正常完成函数应用发布
  • Pipeline中执行完全相同的命令时抛出错误:
Unable to find project root. Expecting to find one of host.json in project root.

为排查问题,在Pipeline脚本中添加路径与文件列表查看命令:

pwd
ls -l

执行返回结果如下:

Deploying functions app code with func...
/opt/atlassian/pipelines/agent
total 16
drwxrwxrwx 2 root root 4096 Jun  7 09:16 artifact
drwxrwxrwx 5 root root 4096 Jun  7 09:16 build
drwxrwxrwx 2 root root 4096 Jun  7 09:16 cache
drwxrwxrwt 3 root root  100 Jun  7 09:16 data
drwxrwxrwt 3 root root  100 Jun  7 09:16 ssh
drwxrwxrwx 2 root root 4096 Jun  7 09:16 tmp

结果显示Pipeline当前执行目录为/opt/atlassian/pipelines/agent,该目录下不存在host.json文件。但host.json已提交至代码仓库,本地执行相同的pwd和ls -l命令时,工作目录为项目根目录且host.json存在,本地发布可正常运行。

根因分析

Bitbucket Pipeline执行脚本时的默认工作目录是/opt/atlassian/pipelines/agent,拉取的仓库代码实际存放在内置环境变量BITBUCKET_CLONE_DIR指向的路径下(默认路径为/opt/atlassian/pipelines/agent/build),执行发布命令前没有切换到代码所在的项目根目录,导致Azure Functions Core Tools无法找到标识项目根目录的host.json文件。

解决方法

两种方案二选一即可:

  • 方案1:执行发布命令前先切换到项目根目录
    在Pipeline的script步骤中,先进入代码克隆的根目录,再执行发布命令,示例配置片段:

    script:
      # 前置步骤:安装对应版本dotnet SDK、Azure Functions Core Tools
      - cd $BITBUCKET_CLONE_DIR
      # 可选校验步骤:确认当前目录下存在host.json
      - ls | grep host.json
      - func azure functionapp publish "<替换为实际的函数应用名称>" --csharp
    

    如果你的Azure Functions项目不在仓库根目录,而是在子目录下(例如src/MyFunctionApp),将cd命令的路径改为$BITBUCKET_CLONE_DIR/src/MyFunctionApp即可。

  • 方案2:发布命令直接指定项目路径
    不需要切换工作目录,直接在func命令中通过--project参数指定项目根目录路径:

    script:
      # 前置步骤:安装对应版本dotnet SDK、Azure Functions Core Tools
      - func azure functionapp publish "<替换为实际的函数应用名称>" --csharp --project $BITBUCKET_CLONE_DIR
    
校验提示

配置调整后首次运行时,可以在发布命令前添加ls $BITBUCKET_CLONE_DIR命令,确认输出的文件列表中包含host.json、项目csproj文件后,再执行后续发布操作,可快速确认路径配置是否正确。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 04:24:23