我试图使用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服务器。
假设您有以下需求:
- 准备发布的Flutter包。
- pub.dev.
GitHub上的一个具有管理员权限的存储库。一台可以工作的笔记本电脑,网络连接,还有一些耐心!
以下是要遵循的步骤:
- 检索pub.dev的登录凭据
在GitHub上创建秘密文件- 编写shell脚本设置凭据
为GitHub Action创建一个工作流- 触发构建。
运行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规则会要求,因为这太长了,将来可能会改变。