You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在CI中发布pub.dev包的最简单方法是什么?credentials.json格式可查吗?

核心问题解答

credentials.json(目前Dart 2.15+版本已更名为pub-credentials.json)的格式是公开可查的,属于pub官方定义的标准认证文件结构。


文件标准格式

你本地完成dart pub login授权后生成的凭证文件格式如下:

{
  "accessToken": "Google OAuth访问令牌",
  "refreshToken": "Google OAuth刷新令牌",
  "idToken": "可选字段,Google账号ID令牌",
  "tokenEndpoint": "https://accounts.google.com/o/oauth2/v3/token",
  "scopes": [
    "openid",
    "https://www.googleapis.com/auth/userinfo.email"
  ],
  "expiration": 令牌过期的Unix时间戳(秒级)
}

低维护成本的Github Actions配置方案

你提到的写死Flutter版本路径的方案确实维护成本很高,可以用pub自带的环境变量实现跨版本、跨系统通用配置:

  1. 本地完成dart pub login授权后,复制本地生成的pub-credentials.json全部内容
  2. 在Github仓库的Secrets设置中新增名为PUB_CREDENTIALS的Secret,粘贴刚才复制的内容
  3. 在Github Actions的工作流文件中按系统对应写入凭证即可:
    • Linux/macOS runner:run: echo "${{ secrets.PUB_CREDENTIALS }}" > $PUB_CACHE/credentials.json
    • Windows runner:run: echo "${{ secrets.PUB_CREDENTIALS }}" > $env:APPDATA\dart\pub-credentials.json

注意事项

  • 凭证文件中的refreshToken长期有效,除非你主动在Google账号设置中撤销pub的登录授权,无需频繁更新Secret
  • 所有凭证内容禁止直接提交到代码仓库,必须存储在Github Secrets等加密配置项中
  • 如果你使用Flutter发布包,只需把发布命令换成flutter pub publish即可,凭证文件通用

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 01:30:01