You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Travis-CI从部署密钥切换到用户密钥后克隆失败,是否需删除部署密钥?

解决Travis CI用户密钥访问跨私有仓库的问题

一、是否需要删除部署密钥?

答案是需要,但可以先做安全验证再操作:
Travis CI在处理SSH仓库访问时,仓库级的部署密钥优先级高于账户级的用户密钥。也就是说,只要当前仓库还配置了部署密钥,Travis会优先用它来尝试克隆其他私有仓库——但部署密钥仅对当前仓库有访问权限,自然会抛出ERROR: Repository not found的错误。

为了尽可能降低对正在运行的构建的影响,你可以先暂时禁用部署密钥(在GitHub仓库的「Settings > Deploy keys」里取消勾选权限,或者暂时删除后可恢复测试),然后触发一次测试构建,确认克隆另一个私有仓库的命令能正常执行。验证没问题后,再彻底删除部署密钥即可。

二、如何确认用户密钥已关联到目标仓库?

有两种简单的方式可以验证:

  1. 通过Travis CLI验证
    登录Travis CLI后,执行以下命令:
travis ssh-key --list -r organisation/your-target-repo

这个命令会列出该仓库关联的所有SSH密钥,你上传的用户密钥会显示对应的注释(通常是你上传时的标识)或者关联的GitHub用户名,以此确认它已被正确添加。

  1. 通过Travis Web界面验证
    进入Travis CI对应仓库的设置页面,找到「SSH Keys」选项卡:
  • 这里会列出所有已配置的密钥,用户密钥一般会标注为「User Key」,并显示关联的GitHub账号名称;而部署密钥会标注为「Deploy Key」,仅关联当前仓库。

额外调试小技巧

如果还是有问题,可以在.travis.yml里添加一步调试命令,确认当前使用的SSH身份:

before_script:
  - ssh -T git@github.com

运行构建后,这一步会返回当前认证的GitHub用户名,比如Hi username! You've successfully authenticated, but GitHub does not provide shell access.,以此确认是否用了拥有跨仓库权限的用户密钥。

内容的提问来源于stack exchange,提问作者k_rus

火山引擎 最新活动