【问题标题】:docker autobuild with git private submodule带有 git 私有子模块的 docker autobuild
【发布时间】:2014-11-27 05:36:27
【问题描述】:

我在 GitHub 上有两个私有存储库,名为 dashboardui。我将ui 定义为dashboard 的git 子模块,并且我将docker 配置为在特定分支的每次更改时自动构建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 也找不到任何 Dockerfile。所以,我将无法给它任何指示或添加另一个 SSH 密钥。

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

【问题讨论】:

  • 遇到了同样的问题。任何人都可以确认私有子模块应该在自动构建中工作吗?

标签: git docker git-submodules


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    我正在等待 docker 团队的更好消息。

    【讨论】:

      【解决方案3】:

      如果子模块不适合您可以尝试切换到子树。它或多或少的变化很少。子树在您的项目中用作远程。

      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/

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-28
        • 2012-06-07
        • 2012-05-24
        • 2020-02-26
        • 2016-04-21
        • 1970-01-01
        相关资源
        最近更新 更多