【问题标题】:PHP Drone.io Cloning IssuePHP Drone.io 克隆问题
【发布时间】:2014-05-27 17:13:58
【问题描述】:

我正在尝试使用 Drone.io 来自动化我们的测试过程。

我正在尝试将它用于两个私人项目 - 一个工具集和一个应用程序。

该工具集运行良好。单元测试运行,一切正常。

另一方面,应用程序正确克隆,但随后需要工具集作为依赖项,并试图从 github 克隆它。这两个都是私有 repos。

现在我的.drone.yml 文件中有以下行。

script:
    - git clone --mirror 'git@github.com:fakename/fakeproject.git'

这会产生以下错误。请注意,为了保护我的雇主,回购的名称已更改。

$ git clone --mirror 'git@github.com:fakename/fakeproject.git' '/home/ubuntu/.composer/cache/vcs/fakename-github.com-fakename-fakeproject.git/'
Cloning into bare repository '/home/ubuntu/.composer/cache/vcs/fakename-github.com-fakename-fakeproject.git'...
Permission denied (publickey).
fatal: The remote end hung up unexpectedly

我不想将凭据放在.drone.yml 中,我已尝试将 Drone.io 安装的 ssh-rsa 添加到我的 github 帐户,但 github 告诉我密钥已在使用中。任何有关如何进行的帮助将不胜感激。

【问题讨论】:

    标签: php git github automated-tests build-automation


    【解决方案1】:

    编辑最初的答案是针对使用 SSH 密钥克隆存储库的无人机 0.3。 0.4 及更高版本将 oauth 令牌写入 .netrc 文件以授权所有 git+https 操作。这意味着只要您使用的是 git+https 而不是 git+ssh,drone 就可以开箱即用地克隆私有存储库


    在这种情况下,您需要 1) 从 GitHub 的存储库中删除 ssh 密钥,以及 2) 在 GitHub (https://github.com/settings/ssh) 的用户帐户级别添加 SSH 密钥。用户帐户级别的 ssh 密钥可以克隆您的帐户可访问的任何存储库。

    【讨论】:

    • 我是否正确理解我想从 Drone 的“公钥,用于部署”设置窗格中添加 ssh 密钥,还是其他密钥?
    • 想通了。非常非常感谢!
    • 我会说这几乎不是一种可扩展的方法。私人回购的用户授权随着人们加入和离开公司而改变,并且由于未经授权的用户而导致的 CI 中断将产生相当难以描述的错误,这将是一个难以诊断的错误。管理机器用户(或许多,如果访问限制很复杂)也是安全方面的主要难题。实际需要的是将多个部署密钥注入构建过程的某种方式,而不是让 Drone 要求在任何地方都使用一个密钥(因为 Github 部署密钥不能在存储库之间重用)。
    猜你喜欢
    • 2011-08-23
    • 2010-12-18
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 2015-10-24
    相关资源
    最近更新 更多