如何从 Bitbucket 管道中的私人存储库中提取数据?

问题描述 投票:0回答:2

我有一个运行良好的 bitbucket 管道,但现在在一个项目中,我需要从私有存储库中提取,其中包含我的composer.json 中所需的包。

当我在管道中执行

composer install
时,它会因此错误而停止

Failed to execute git clone --no-checkout '[email protected]:company/package.git' [...]
  Cloning into '/opt/atlassian/pipelines/agent/build/vendor/company/package'...                                                                                                                                                                                                                                                                                 
  Permission denied (publickey).                                                                                                                                                                                                                                                                                                                                                
  fatal: Could not read from remote repository.                                                                                                                                                                                                                                                                                                                                 
  Please make sure you have the correct access rights                                                                                                                                                                                                                                                                                                                           
  and the repository exists. 

管道没有定义任何 SSH 密钥,因此不允许拉取,但由于它是短暂的,我如何定义它?

或者也许我应该另外定义需求?

git bitbucket bitbucket-pipelines
2个回答
11
投票
  • 将部署密钥(公共 SSH 密钥)添加到私有存储库
  • 将该密钥相应的私钥(Base64 编码)添加为具有 Pipeline 的存储库中的环境变量。理想情况下,这应该标记为受保护,这将隐藏它。
  • 在管道中使用环境变量(Base64 解码)。通常,这意味着将其写入用户的
    .ssh
    目录。

这应该足以让它运行。

此外,我刚刚看到现在(也许这是新的,但我不确定)有一个新页面“设置”>“管道”>“SSH 密钥”用于管理管道 SSH 密钥。这样,您甚至不需要将私钥添加到您正在使用的 docker 镜像中。但我到目前为止还没有使用过,所以我不能说什么。


0
投票

正如@bluem的答案末尾所建议的那样,现在变得更简单了:

假设存储库

foo
需要访问private存储库
bar
,那么(在bitbucket.org上):

  1. 转到
    foo
    存储库设置 -> 管道 -> SSH 密钥
  2. 单击“生成密钥”(或使用您自己的密钥)
  3. 复制公钥
  4. 转到
    bar
    存储库设置 -> 安全 -> 访问密钥
  5. 点击“添加密钥”,使用
    foo
  6. 中的公钥填写表格
  7. 完成。

有关详细信息,请参阅文档

© www.soinside.com 2019 - 2024. All rights reserved.