8

Flutter工程笔记 | CI是个天坑

 3 years ago
source link: https://zhuanlan.zhihu.com/p/368363612
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Flutter工程笔记 | CI是个天坑

厦门量潮科技有限公司 执行董事

最近尝试做Flutter的CI流程遇到了一些问题,简单地列举一下。

  • iOS和macOS平台打包。在macOS系统是可以打包全平台的,然而在Windows和Linux就没有什么好办法了,因为没有XCode。而macOS的服务器几乎是没有的,唯一可选的就是AWS的macOS计算实例,而且价格非常贵,比直接买Mac Mini还贵。有了云端或者本地环境还是要配置,十分麻烦,详见:使用 macOS 环境作为构建节点
  • `pubspec.yaml`注入环境变量。Flutter 1.17以后已经支持在项目里使用环境变量,然而唯一的漏网之鱼是配置文件,偏偏我要在配置文件里用,官方不打算支持这个特性,详见:Allow environment variables in pubspec.yaml · Issue #1358 · dart-lang/pub
  • Flutter使用私有依赖。为什么有上一条需求呢?因为我想用Deploy Token导入私有依赖,比如一些包含了内部用户服务相关逻辑的公共依赖,或者自己开发的带了官方实现的私有协议的腾讯云云点播播放器SDK。可选的方法除了上面的Deploy Token,还可以用需要费一番功夫的Git子模块或者SSH访问,或者自己搭一个Pub Server然后维护,性价比都不是太高。
  • Docker构建环境。官方没有提供Flutter镜像,有一个Dart镜像。第三方提供了一些Flutter镜像,不过不确定对平台支持如何,看了几个是支持Android的或者也支持Web,Desktop就不太确定了。这就意味着有一定概率还需要自己做Docker镜像并上传到Coding的制品库里。

目前看来,在macOS本机手动打包以后再上传都比搞CI简单……

希望官方、国内外大厂和社区可以出一些完整的基于GitLab/Coding/云效等DevOps平台的实践方案。理论上我的问题只要是个想做Flutter项目CI的人都会遇到的,也应该有成套的方案才对。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK