作曲家 - 在管道上使用 DockerFile 中的用户名和密码(无 SSH 密钥)克隆 Git 存储库 (Bitbuc



我有一个composer.json文件,它检查了我在Docker中构建的两个私有Bitbucket存储库。

"repositories": [
{
"type": "vcs",
"url":  "git@bitbucket.org:repo/service.git"
},
{
"type": "vcs",
"url":  "git@bitbucket.org:repo/package.git"
}
]

目前,我可以让它工作的唯一方法是将 SSH 密钥注入映像,以便它可以拉取私有存储库。反过来,这要求我们将密钥签入 SCM,这并不理想(总体上是一种非常糟糕的做法(。

ADD ./build_id_rsa /home/user/.ssh/id_rsa
ADD ./build_id_rsa.pub /home/user/.ssh/id_rsa.pub

参考文档,看起来SSH密钥是唯一受支持的选项 - https://getcomposer.org/doc/05-repositories.md#using-private-repositories。

唯一的要求是为 git 客户端安装 SSH 密钥。

我希望有一种方法可以通过用户名和密码进行身份验证,我可以使用您可以保护的 Bitbucket 存储库变量传入。

我还将采用其他人想出的任何其他解决方法来构建一个运行composer install的 Docker 映像,该映像会签出私有 git 存储库。

我不熟悉作曲家,但这是我能想到的一个选项,可能会对您有所帮助。

使用 ssh 密钥创建基础映像,并将映像存储在专用 docker 注册表中
然后从映像中分层每个生成,其中已有密钥,这样就不必将密钥保存在源代码管理中。

此外,您甚至不必使用此映像,实际上您可以使用 docker 多阶段构建并将密钥从基础映像复制到您想要使用的任何映像,这样您仍然可以使用您想要的任何 docker 映像构建并具有 not from 源代码管理。

附言
bitbucket中有选项可以使用URL中的用户名和密码进行身份验证,如下所示。
https://username:password@bitbucket.org/username/repo.git也许这可能很有用。

无需将密钥烘焙到容器中 - 可以在存储库管理面板中的管道中添加私钥。

该过程看起来有点像这样:

  1. 转到存储库管理面板,然后单击"SSH 密钥"链接。
  2. 添加现有私钥,或让管道为你生成 2048 位 RSA 密钥。
  3. 如果使用 Pipelines 生成的密钥,请复制公钥
  4. ;如果使用现有密钥,请复制其公钥。将复制的密钥添加到service,并将package存储库作为"访问密钥"(在这些存储库管理面板上的"访问密钥"屏幕中(。
  5. 让 bitbucket-pipelines.yml 像往常一样使用 SSH。SSH 密钥屏幕中的密钥将是连接尝试的默认密钥;Bitbucket 已经知道自己的主机密钥指纹,因此您不必更新known_hosts,并且访问密钥设置提供对存储库的只读访问权限,而无需刻录用户席位。

https://confluence.atlassian.com/bitbucket/use-ssh-keys-in-bitbucket-pipelines-847452940.html 是这方面的文档。

最新更新