docker autobuild with git private submodule

时间:2014-10-02 08:46:07

标签: git docker git-submodules

我在GitHub上有两个名为dashboardui的私有存储库。我将ui定义为dashboard的git子模块,并且我在特定分支的每个更改上都将docker配置为autobuild dashboard

我已阅读此文档https://docs.docker.com/docker-hub/builds/,但当我尝试在我的ui设置中设置docker提供的部署密钥时,它会显示“密钥已在使用中”。实际上,dashboard已使用此密钥来允许docker自动生成此repo!

这是我的docker构建日志:

  

错误:

Failed to clone repository: Cloning into '/tmp/build_byaxhis7sznbvmb6wgwzm6n'...
Submodule 'app/styles/ui' (git@github.com:yllieth/ui.git) registered for path 'app/styles/ui'
Cloning into 'app/styles/ui'...


Warning: Permanently added 'github.com,192.30.252.130' (RSA) to the list of known hosts.
ERROR: Repository not found.
fatal: The remote end hung up unexpectedly
Clone of 'git@github.com:yllieth/ui.git' into submodule path 'app/styles/ui' failed
     

Dockerfile:

即使我在dashboard repo中定义了Docker文件,Docker也找不到任何Docker文件。所以,我将无法给它任何指示或添加另一个SSH密钥。

如果有人知道如何使用autobuild与私有回购和git子模块,我很感兴趣!

3 个答案:

答案 0 :(得分:4)

如果您的GitHub存储库包含指向私有子模块的链接,您将在构建中收到错误消息。通常,Docker Hub在GitHub存储库中设置部署密钥。不幸的是,GitHub只允许存储库部署密钥访问单个存储库。要解决此问题,您需要在GitHub中创建专用用户帐户,并将自动构建的部署密钥附加到该帐户。此专用构建帐户可以仅限于只读访问,仅限于构建所需的存储库。

一个人已经在docker document中发起了对更新的pull请求。 他还包括可能帮助您解决此问题的屏幕截图。

答案 1 :(得分:2)

这很难看,但您可以在github调用它们时创建一个机器用户,并将部署密钥作为用户密钥添加到它(从部署密钥中删除后)。然后将该用户添加为该构建所需的每个repo的只读用户。

我正在等待码头工作小组了解更好的事情。

答案 2 :(得分:0)

如果子模块不起作用,可以尝试切换到子树。它的更多或更喜欢做同样的变化。子树在项目中用作远程。

https://medium.com/@v/git-subtrees-a-tutorial-6ff568381844
http://git-scm.com/book/en/v1/Git-Tools-Subtree-Merging
http://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/