在CI中发布pub.dev包的最简单方法是什么?



我试图使用dart pub publish在Github Actions中自动发布一个包,但我需要登录。登录工作流需要用户交互(通过Google登录),因此不能在CI上使用。

根据https://github.com/dart-lang/pub/issues/2227似乎没有一个简单的方法,但有人提到:

必须放置像run:echo ${{secrets.PUB_CREDENTIALS}} > /opt/hostedtoolcache/flutter/1.9.1-hotfix.2-stable/x64/.pub-cache/credentials.json这样的路径并不是很好维护。

这个credentials.json的格式是否已知?

编辑:在Windows上,the credentials.json文件不在C:Users<USER>AppDataRoamingPubCachecredentials.json中,如博客文章所示,它现在在C:Users<USER>AppDataRoamingdartpub-credentials.json

这篇中篇文章有一个清晰的指南,可以帮助您通过CI-CD将Flutter或Dart包发布到pub.dev服务器。

假设您有以下需求:

  1. 准备发布的Flutter包。
  2. pub.dev.
  3. GitHub上的一个具有管理员权限的存储库。一台可以工作的笔记本电脑,网络连接,还有一些耐心!

以下是要遵循的步骤:

  1. 检索pub.dev的登录凭据
  2. 在GitHub上创建秘密文件
  3. 编写shell脚本设置凭据
  4. GitHub Action创建一个工作流
  5. 触发构建。

运行pub publish时请注意:

当我们第一次在终端中运行这个命令时,pub会让我们登录我们的pub。dev账号吗打开URL在命令行上打印。一旦我们登录使用该URL,pub存储一些登录凭据(碰巧是(一些令牌)放入名为credentials.json的文件中。

下次运行pub publish命令时,它将检查该文件并在不要求再次登录的情况下继续。这给了我一个启示。提示要使它在CI-CD服务器上工作,我们需要创造这个

您可以访问博客"使用GitHub action "发布您的Flutter/Dart包;查看以上每个步骤的详细信息。

现在支持

https://dart.dev/tools/pub/automated-publishing

我不能在这里发布一个解释,因为stackoverflow规则会要求,因为这太长了,将来可能会改变。