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

GitHub个人访问令牌权限疑问:公共仓库全写入?CI单仓库权限设置

问题1:GitHub个人访问令牌是否具备所有公共仓库的写入权限?

答案是否定的——默认创建的个人访问令牌(PAT)不会自动拥有任何公共仓库的写入权限。所有权限都是你在生成令牌时手动选择的:

  • 如果你没勾选任何仓库相关的权限项,这个令牌甚至连公共仓库的读取权限都没有;
  • 只有当你主动勾选了对应权限(比如传统权限里的repo组,或者精细粒度权限里的仓库内容权限),令牌才会获得对应的访问能力,权限范围完全由你设置决定。
问题2:如何给CI用的令牌仅赋予单个仓库的推送权限?

要实现这个需求,你需要使用GitHub的精细粒度个人访问令牌(这是GitHub现在推荐的权限控制方式,能精准到单个仓库),具体步骤如下:

  1. 生成令牌时,选择「精细粒度令牌」选项,而不是传统的「范围令牌」;
  2. 在「仓库权限」区域,选择「仅选择仓库」,然后从下拉列表中选中你需要CI操作的目标仓库;
  3. 针对选中的仓库,开启必要的权限:
    • 因为你要通过Electron-Builder上传到GitHub Releases,需要勾选**「内容」权限下的「写入」**(对应contents: write);
    • 另外如果需要直接管理发布版本,还可以勾选**「发布」权限下的「写入」**(对应releases: write),这两个权限完全足够完成上传操作;
  4. 生成令牌后,按照Travis-CI/AppVeyor的指引,将这个令牌加密后存储为环境变量(比如命名为GH_TOKEN),后续Electron-Builder就能通过这个令牌仅操作指定的单个仓库,不会涉及其他仓库的权限。

注意:如果使用传统的范围令牌(比如勾选repo权限),这种权限是全局的,无法限制到单个仓库,所以一定要用精细粒度令牌的方式来实现最小权限原则。

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

火山引擎 最新活动