Docker Hub和git子模块

问题描述 投票:1回答:2

我有一个使用git子模块的存储库,并且我在Docker Hub上配置了自动构建。在构建过程的开始,似乎Docker Hub从默认分支(主服务器)中拉出了存储库,更新了子模块,然后签出到触发了构建的特定分支(例如分支Feature-a)。如果feature-a分支具有与master完全相同的子模块,则工作正常,但如果子模块不同(例如,从另一个存储库中拉出一个子模块),则构建失败。

有没有一种方法可以使Docker Hub直接克隆正确的分支?

docker github dockerhub
2个回答
1
投票

可能会失败,因为子模块是私有的。

您可以添加构建环境变量SSH_PRIVATE。并添加一个可以访问私有子模块存储库的私有密钥。

不过请注意,您可能想要生成一个diff私钥,而不是用于其他任何东西的私钥,并将其添加到私有子模块存储库中。

编辑:即使您链接的github帐户有权访问该存储库,这也是必需的,因为您很可能将子模块的url指定为基于ssh的文件(例如[email protected]:Account / repo.git)

Edit2:添加文档https://docs.docker.com/docker-hub/builds/#build-repositories-with-linked-private-submodules


0
投票

您需要使用钩子:https://docs.docker.com/docker-hub/builds/advanced/#custom-build-phase-hooks

TL; DR:将此放置在hooks/post_checkout:]中>

#!/bin/bash
# Docker hub does a recursive clone, then checks the branch out,
# so when a PR adds a submodule (or updates it), it fails.
git submodule update --init
© www.soinside.com 2019 - 2024. All rights reserved.