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

如何在Azure函数应用中使用私有GitHub Python包?

问题描述

我有一个私有GitHub包,本地Azure函数应用中可以通过以下命令安装:

pip install git+https://git@github.com/org-name/package-name.git

本地运行func start一切正常,但执行发布命令:

func azure functionapp publish "app" --python

后,pip安装步骤失败,报错如下:

Running command git clone -q 'ssh://****@github.com/org-name/package-name' /tmp/pip-req-build-7f2uwfvf
Host key verification failed.
fatal: Could not read from remote repository.

已知是远程构建未指定凭证导致的问题,但不想在requirements.txt中硬编码个人访问令牌(PAT),求其他解决方案。

解决方案

以下几种方案可避免硬编码凭证,实现Azure函数远程构建时安装私有GitHub包:

1. 用Azure应用程序设置存储PAT,通过环境变量引用

  • 登录Azure门户,找到目标函数应用,进入配置 > 应用程序设置,添加新设置(比如命名为GITHUB_PAT),值填入具备私有仓库读取权限的GitHub个人访问令牌。
  • 修改requirements.txt,通过环境变量引用PAT:
    git+https://${GITHUB_PAT}@github.com/org-name/package-name.git
    
    Azure函数构建时会自动读取应用程序设置中的环境变量,无需将PAT硬编码到代码中。

2. 配置Azure函数与GitHub的部署集成

  • 在Azure门户的函数应用中,进入部署中心 > 设置,选择GitHub作为源代码管理并完成授权。此时Azure会获得访问你GitHub私有仓库的权限,构建过程可直接拉取私有包。
  • 这种方式下,requirements.txt中直接写原始私有仓库地址即可,无需携带凭证,Azure会通过已授权的连接访问仓库。

3. 提前构建依赖包,上传到Azure存储后从存储安装

  • 本地环境中将私有GitHub包打包成.whl文件:
    pip wheel git+https://git@github.com/org-name/package-name.git -w ./wheels
    
  • 将wheels文件夹中的.whl文件上传到Azure Blob存储容器(设置为私有访问)。
  • 在requirements.txt中指定从Azure存储URL安装,同时通过Azure应用程序设置存储存储账户的SAS令牌,用环境变量引用:
    https://${STORAGE_ACCOUNT_NAME}.blob.core.windows.net/wheels/package-name-xxx.whl?${STORAGE_SAS_TOKEN}
    
    该方式完全避开GitHub凭证传递,依赖包从自有Azure存储获取。

4. 使用Azure DevOps Pipeline完成构建部署

  • 创建Azure DevOps Pipeline,在流水线中配置GitHub服务连接(授权访问私有仓库)。
  • 在流水线步骤中,先拉取私有GitHub包并安装到函数应用依赖目录,再部署到Azure函数。
  • 此方案由DevOps Pipeline处理凭证,函数应用本身无需存储敏感信息,适合团队协作场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 17:25:15