带Commit Id的Git仓库URL克隆失败及子目录单克隆方案咨询
带Commit Id后缀的Git克隆URL失效原因
原生Git从未支持在仓库URL后附加#<commit id>的格式指定克隆目标提交,之前能正常使用是依赖上层工具(比如旧版BuildKit、CI执行器等)的非标准扩展解析能力,近期相关工具版本迭代后移除了该非标准支持,因此直接写入URL的方式不再生效。
原生Git克隆指定提交的单行命令写法为:
git clone --depth 1 --single-branch https://<Github id>:<GitHub PAC>@github.com/<org>/<repo>.git && cd <repo> && git reset --hard <commit id>
仅克隆仓库指定子目录的单行实现
Git 2.19及以上版本支持稀疏检出能力,原生单行实现仅拉取指定子目录的命令如下:
git clone --depth 1 --filter=blob:none --sparse https://<Github id>:<GitHub PAC>@github.com/<org>/<repo>.git && cd <repo> && git sparse-checkout set <目标子目录相对路径>
如果要直接用于Docker Compose的build context配置,不需要额外编写脚本,可直接使用BuildKit原生支持的Git Context参数格式,示例配置如下:
services: your-service: build: context: https://<Github id>:<GitHub PAC>@github.com/<org>/<repo>.git#<分支名>:<目标子目录相对路径>?ref=<commit id>
上述配置可以同时满足指定Commit版本、仅拉取目标子目录的需求,无需在Dockerfile中添加额外处理逻辑。
内容的提问来源于stack exchange,提问作者user994165
相关产品推荐
相关产品推荐

