CircleCI 无法访问私有存储库
CircleCI failing to access private repository
我们有一个 Flutter 应用程序,它使用私有存储库作为依赖项。
SSH 密钥已添加到 CircleCI,并且使用相同的密钥远程访问存储库在本地工作得很好。
配置已添加到 .circleci/config.yml
:
- add_ssh_keys:
fingerprints:
- "84:1a:so:me:ke:y:14:31:0f"
但 CircleCI 始终无法访问私有依赖库,并出现以下错误:
" Running "flutter pub get" in project... Git error. Command: git clone --mirror git@bitbucket.org:our_account/priv_repo.git /home/circleci/development/flutter/.pub-cache/git/cache/priv_repo-3456accd54b38ec5b3820944f77e90ce2ddc9887
stdout: stderr: Cloning into bare repository
'/home/circleci/development/flutter/.pub-cache/git/cache/priv_repo-3456accd54b38ec5b3820944f77e90ce2ddc9887'...
Warning: Permanently added the RSA host key for IP address
'18.205.93.1' to the list of known hosts. Unauthorized fatal: Could
not read from remote repository.
Please make sure you have the correct access rights and the repository
exists. exit code: 128 "
有没有人成功创建了一个包含私有 repo 依赖的 CircleCI 部署?
可能缺少什么导致此问题?
好的 - 有几处我错了,
最主要的是我把 add_ssh_keys
行放错了地方。
它确实 需要成为第一步 ,或者至少在 flutter/install_sdk_and_pub
步骤之前。
例如。 这有效(但如果 add_ssh_keys
步骤位于此处 4 个步骤列表的底部,则失败):
steps:
- add_ssh_keys:
fingerprints:
- "84:1a:so:me:ke:y:14:31:0f"
- checkout
- aws-cli/setup:
profile-name: example
- flutter/install_sdk_and_pub:
flutter_version: 2.5.3
除此之外,值得注意的是,我将 SSH 密钥添加为“其他 SSH 密钥”类型的密钥(添加“用户密钥”破坏了部署)(在“项目设置”>“SSH 密钥”下),
我将密钥的 Hostname 设置为“bitbucket.org”。
所以 CircleCI 现在成功地引入了我的私有 repo 依赖。
它在版本控制不匹配的问题上失败,但这是另一个问题,将在另一个时间解决。
我想先澄清一些事情。
The main one was that I had the add_ssh_keys line in the wrong place.
It really needs to be the first step, or at least be before the flutter/install_sdk_and_pub step.
是的,这是因为每个步骤 运行 都在不同的会话中,所以它们不会共享彼此的配置。您的 ssh-key
之所以有效,是因为在 Project Settings
上定义的环境变量用于所有步骤。
eg. This works (but if the add_ssh_keys step was at the bottom of the list of 4 steps here then it fails):
是的,如果你想在另一个步骤中使用这个fingerprint
,你也需要将它粘贴到那里。
您可以采取一些措施来解决您的问题,您可以将主 ssh-key
保留在 Project Settings
上,您可以使用 public 键创建一个环境变量内容(来自另一个ssh-key
)。
之后,在使用第二个键之前,您需要 运行 一些命令,例如:
- run:
name: Step I'm using the second key
command: |
echo -e $MY_ENV_VAR | base64 -d > key
chmod 400 key
eval $(ssh-agent -s)
ssh-add key
git clone...
docker build...
这样做,您将能够克隆第二个存储库。
我们有一个 Flutter 应用程序,它使用私有存储库作为依赖项。
SSH 密钥已添加到 CircleCI,并且使用相同的密钥远程访问存储库在本地工作得很好。
配置已添加到 .circleci/config.yml
:
- add_ssh_keys:
fingerprints:
- "84:1a:so:me:ke:y:14:31:0f"
但 CircleCI 始终无法访问私有依赖库,并出现以下错误:
" Running "flutter pub get" in project... Git error. Command:
git clone --mirror git@bitbucket.org:our_account/priv_repo.git /home/circleci/development/flutter/.pub-cache/git/cache/priv_repo-3456accd54b38ec5b3820944f77e90ce2ddc9887
stdout: stderr: Cloning into bare repository '/home/circleci/development/flutter/.pub-cache/git/cache/priv_repo-3456accd54b38ec5b3820944f77e90ce2ddc9887'... Warning: Permanently added the RSA host key for IP address '18.205.93.1' to the list of known hosts. Unauthorized fatal: Could not read from remote repository.Please make sure you have the correct access rights and the repository exists. exit code: 128 "
有没有人成功创建了一个包含私有 repo 依赖的 CircleCI 部署?
可能缺少什么导致此问题?
好的 - 有几处我错了,
最主要的是我把 add_ssh_keys
行放错了地方。
它确实 需要成为第一步 ,或者至少在 flutter/install_sdk_and_pub
步骤之前。
例如。 这有效(但如果 add_ssh_keys
步骤位于此处 4 个步骤列表的底部,则失败):
steps:
- add_ssh_keys:
fingerprints:
- "84:1a:so:me:ke:y:14:31:0f"
- checkout
- aws-cli/setup:
profile-name: example
- flutter/install_sdk_and_pub:
flutter_version: 2.5.3
除此之外,值得注意的是,我将 SSH 密钥添加为“其他 SSH 密钥”类型的密钥(添加“用户密钥”破坏了部署)(在“项目设置”>“SSH 密钥”下),
我将密钥的 Hostname 设置为“bitbucket.org”。
所以 CircleCI 现在成功地引入了我的私有 repo 依赖。
它在版本控制不匹配的问题上失败,但这是另一个问题,将在另一个时间解决。
我想先澄清一些事情。
The main one was that I had the add_ssh_keys line in the wrong place. It really needs to be the first step, or at least be before the flutter/install_sdk_and_pub step.
是的,这是因为每个步骤 运行 都在不同的会话中,所以它们不会共享彼此的配置。您的 ssh-key
之所以有效,是因为在 Project Settings
上定义的环境变量用于所有步骤。
eg. This works (but if the add_ssh_keys step was at the bottom of the list of 4 steps here then it fails):
是的,如果你想在另一个步骤中使用这个fingerprint
,你也需要将它粘贴到那里。
您可以采取一些措施来解决您的问题,您可以将主 ssh-key
保留在 Project Settings
上,您可以使用 public 键创建一个环境变量内容(来自另一个ssh-key
)。
之后,在使用第二个键之前,您需要 运行 一些命令,例如:
- run:
name: Step I'm using the second key
command: |
echo -e $MY_ENV_VAR | base64 -d > key
chmod 400 key
eval $(ssh-agent -s)
ssh-add key
git clone...
docker build...
这样做,您将能够克隆第二个存储库。