Docker Hub和git子模块

时间:2019-01-05 19:51:18

标签: docker github dockerhub

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

有没有办法使Docker Hub直接克隆正确的分支?

2 个答案:

答案 0 :(得分:3)

您需要使用钩子: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

答案 1 :(得分:0)

可能由于子模块是私有的而失败。

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

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

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

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