如何在Azure Pipeline中配置HTTP/2协议执行git checkout
问题说明
需要配置Azure Pipelines中的Git checkout步骤基于HTTP/2协议运行,当前未找到对应开放配置项,Azure内置checkout逻辑会强制将http.Version设置为HTTP/1.1,受防火墙规则限制,HTTP/1.1的Git请求会被拦截,需要可落地的配置方案或变通方法。
基础环境信息
- 代理运行形态:Kubernetes集群中以容器形式运行的azp自托管代理
- 流水线运行日志截图:

- 当前使用的流水线YAML配置:
pool: name: "some pool" trigger: - some branch stages: - stage: main jobs: - job: synchronize steps: - checkout: self clean: true displayName: Git checkout continueOnError: true - task: Bash@3 inputs: targetType: filePath filePath: $(System.DefaultWorkingDirectory)/scripts/sync_git.sh workingDirectory: $(System.DefaultWorkingDirectory)
可行方案
方案1:弃用内置checkout步骤,手动执行Git拉取
Azure Pipelines内置checkout任务的HTTP版本配置是硬编码在任务逻辑中的,没有对外暴露修改入口,直接跳过内置步骤手动写脚本拉取是改造成本最低的方案:
- 将原有
checkout: self配置修改为checkout: none,关闭默认的代码拉取逻辑 - 在原有业务脚本前新增Bash步骤,提前配置Git强制使用HTTP/2,再通过系统内置访问令牌完成代码拉取,参考配置如下:
steps: - checkout: none - task: Bash@3 displayName: 拉取代码(HTTP/2) inputs: targetType: inline script: | git config --global http.version HTTP/2 git -c http.extraheader="AUTHORIZATION: bearer $(System.AccessToken)" clone $(Build.Repository.Uri) $(System.DefaultWorkingDirectory) cd $(System.DefaultWorkingDirectory) git checkout $(Build.SourceVersion) # 存在子模块时追加下行配置 # git submodule update --init --recursive - task: Bash@3 inputs: targetType: filePath filePath: $(System.DefaultWorkingDirectory)/scripts/sync_git.sh workingDirectory: $(System.DefaultWorkingDirectory)
注意:需要提前在流水线权限设置中,给构建服务账号开放对应代码仓库的读取权限,否则令牌拉取会返回403
方案2:定制azp代理容器镜像,强制Git全局配置优先级
由于代理运行在K8s容器中,可以直接定制代理镜像从底层覆盖配置,不需要修改每条流水线的YAML:
- 构建自定义azp代理镜像时,提前执行
git config --system http.version HTTP/2写入系统级Git配置 - 在代理容器的环境变量中注入Git配置优先级最高的环境变量参数:
Git读取环境变量配置的优先级高于仓库本地配置、任务传入的配置参数,即使内置checkout任务尝试覆写GIT_CONFIG_COUNT=1 GIT_CONFIG_KEY_0=http.version GIT_CONFIG_VALUE_0=HTTP/2http.version为HTTP/1.1也不会生效。 - 将K8s中运行的azp代理镜像替换为自定义镜像即可。
方案3:网络层代理转发
如果前两种方案改造成本较高,可以在K8s集群内部署正向代理:代理和防火墙侧通信走HTTP/2协议,代理和azp代理侧接收HTTP/1.1的Git请求,再转发到Azure Repos服务。只需要给Git配置全局http.proxy参数指向集群内代理地址,不需要修改原有checkout逻辑,也不需要调整Git的HTTP版本配置。
内容的提问来源于stack exchange,提问作者Aman
相关产品推荐
相关产品推荐

