我在GitHub上有两个名为dashboard
和ui
的私有存储库。我将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子模块,我很感兴趣!
答案 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/