在私有 Travis-CI 中从 Deploy 切换到 Key 到 User Key
Switching from Deploy to Key to User Key in private Travis-CI
私有 Travis-CI 在我们的组织中用于 运行 在私有 GitHub 存储库上构建和 CRON 作业。当前部署密钥设置为访问私有 GitHub 存储库。现在有必要在 .travis.yml
脚本中从同一组织克隆另一个私人仓库。最简单和推荐的方法是切换到用户密钥,即使用 GitHub 用户,该用户可以访问所有必需的存储库。
我已经使用 Travis-CI 的 CLI 命令为有权访问两个存储库的用户上传了 SSH 密钥,如 the documentation 中所述,用于两个私有存储库。但是,我收到错误消息,提示未找到克隆存储库。
该脚本包含类似于以下内容的行:
- git clone --progress --verbose git@github.com:organisation/another-git-repo.git /tmp/local-folder
错误信息是:
ERROR: Repository not found.
fatal: Could not read from remote repository.
获取错误消息的测试是通过将更改提交到 .travis.yml
来完成的,.travis.yml
是存储库的一部分,在存储库的分支中使用 git clone 命令。
可能是什么问题?
所以我猜我需要删除 Deploy 密钥,因此使用了 User 密钥,但我在 Travis-CI 文档中找不到任何内容。由于开发人员积极使用这些构建,我想确保删除 Deploy 密钥是前进的方向。任何人都可以确认删除 Deploy 密钥对于使 CLI 上传的用户密钥起作用是必要的吗?
我在 Travis-CI 文档中也找不到:我如何才能看到用户密钥已上传以用于 repos?
我找到了问题的答案。
Can anyone confirm that dropping Deploy key is necessary to make CLI uploaded User key to work?
是的,上传用户密钥时,它会替换部署密钥。因此,在 Travis-CI 的 GUI 中,SSH 密钥将具有用户密钥的名称,该名称是在通过命令行上传期间指定的。在 Travis-CI doc 中它被称为 Default
。
Also I don't find in Travis-CI documentation: how can I see that the user key was uploaded to be used with repos?
除了在 Travis-CI GUI 中观察每个 repo 的密钥外,还可以使用命令行进行检查:
travis pubkey -r <owner>/<repo>
如果上传到不同的存储库,public 密钥将是相同的。
What can be the issue?
首先,最好检查用户的 SSH 密钥是否可以验证 GitHub。很可能默认用户与要测试的该用户不同。一种测试方法是清理 SSH 代理并添加其他用户:
ssh-add -D
ssh-add ~/.ssh/id_travis_rsa
另外,默认本地用户的 SSH 密钥可以临时 removed/renamed 在 .ssh
文件夹中,因此他们不会参与测试。
然后在详细模式下使用 GitHub 测试身份验证:
ssh -vT git@github.com
请注意,如果成功,它将打印来自全局 git 配置的用户名,而不是实际通过密钥进行身份验证的用户。
现在最好克隆有趣的存储库以仔细检查是否已授予读取权限。
如果一切顺利,那么它有望成功。使用 Travis-CI 进行测试的另一种方法是将 git 克隆命令临时添加为 before_script
到 .travis.yml
中的作业,该作业始终在拉取请求时执行,并创建拉取请求。这比使用特殊用途的分支更有效。
before_script:
- git clone --progress --verbose git@github.com:<owner>/<repo>.git tmp/<repo>
私有 Travis-CI 在我们的组织中用于 运行 在私有 GitHub 存储库上构建和 CRON 作业。当前部署密钥设置为访问私有 GitHub 存储库。现在有必要在 .travis.yml
脚本中从同一组织克隆另一个私人仓库。最简单和推荐的方法是切换到用户密钥,即使用 GitHub 用户,该用户可以访问所有必需的存储库。
我已经使用 Travis-CI 的 CLI 命令为有权访问两个存储库的用户上传了 SSH 密钥,如 the documentation 中所述,用于两个私有存储库。但是,我收到错误消息,提示未找到克隆存储库。
该脚本包含类似于以下内容的行:
- git clone --progress --verbose git@github.com:organisation/another-git-repo.git /tmp/local-folder
错误信息是:
ERROR: Repository not found. fatal: Could not read from remote repository.
获取错误消息的测试是通过将更改提交到 .travis.yml
来完成的,.travis.yml
是存储库的一部分,在存储库的分支中使用 git clone 命令。
可能是什么问题?
所以我猜我需要删除 Deploy 密钥,因此使用了 User 密钥,但我在 Travis-CI 文档中找不到任何内容。由于开发人员积极使用这些构建,我想确保删除 Deploy 密钥是前进的方向。任何人都可以确认删除 Deploy 密钥对于使 CLI 上传的用户密钥起作用是必要的吗?
我在 Travis-CI 文档中也找不到:我如何才能看到用户密钥已上传以用于 repos?
我找到了问题的答案。
Can anyone confirm that dropping Deploy key is necessary to make CLI uploaded User key to work?
是的,上传用户密钥时,它会替换部署密钥。因此,在 Travis-CI 的 GUI 中,SSH 密钥将具有用户密钥的名称,该名称是在通过命令行上传期间指定的。在 Travis-CI doc 中它被称为 Default
。
Also I don't find in Travis-CI documentation: how can I see that the user key was uploaded to be used with repos?
除了在 Travis-CI GUI 中观察每个 repo 的密钥外,还可以使用命令行进行检查:
travis pubkey -r <owner>/<repo>
如果上传到不同的存储库,public 密钥将是相同的。
What can be the issue?
首先,最好检查用户的 SSH 密钥是否可以验证 GitHub。很可能默认用户与要测试的该用户不同。一种测试方法是清理 SSH 代理并添加其他用户:
ssh-add -D
ssh-add ~/.ssh/id_travis_rsa
另外,默认本地用户的 SSH 密钥可以临时 removed/renamed 在 .ssh
文件夹中,因此他们不会参与测试。
然后在详细模式下使用 GitHub 测试身份验证:
ssh -vT git@github.com
请注意,如果成功,它将打印来自全局 git 配置的用户名,而不是实际通过密钥进行身份验证的用户。 现在最好克隆有趣的存储库以仔细检查是否已授予读取权限。
如果一切顺利,那么它有望成功。使用 Travis-CI 进行测试的另一种方法是将 git 克隆命令临时添加为 before_script
到 .travis.yml
中的作业,该作业始终在拉取请求时执行,并创建拉取请求。这比使用特殊用途的分支更有效。
before_script:
- git clone --progress --verbose git@github.com:<owner>/<repo>.git tmp/<repo>