Flutter生产开发测试环境隔离以及自动化部署

758 阅读1分钟

1.环境隔离

开发肯定面临各种环境的隔离,网上说了多个启动main文件,这样的话每次要维护多个main文件太不优雅,下面是采用了启动命令加参数的方式来隔离环境,以便后续扩展各种环境和自动化部署。 `

/*
* App入口
* */
void main() async {
  /// 确保初始化
  WidgetsFlutterBinding.ensureInitialized();
  /// sp初始化
  await SpUtil.getInstance();
  //获取命令行参数
  const version = String.fromEnvironment("version");
  Constant.versionNumber = version;
  switch(version){
    case 'PRO':
      StateEnv.env = Env.PRO;
      break;
    case 'DEV':
      StateEnv.env = Env.DEV;
      break;
    default:
      StateEnv.env = Env.DEV;
      break;
  }
  /// App入口
  runApp(
    MultiProvider(
      providers: [
       伪代码...
      ],
      child: MyApp(),
    ),);

  /// 自定义报错页面
  ErrorWidget.builder = (FlutterErrorDetails flutterErrorDetails) {
    debugPrint(flutterErrorDetails.toString());
    return new Center(child: new Text("App错误,请联系技术人员!"));
  };

  /// Android状态栏透明
  if (Platform.isAndroid) {
    SystemUiOverlayStyle systemUiOverlayStyle = SystemUiOverlayStyle(
      statusBarColor: Colors.transparent,
      statusBarBrightness: Brightness.light,
    );
    SystemChrome.setSystemUIOverlayStyle(systemUiOverlayStyle);
  }

}

根据 String.fromEnvironment("version") 获取启动命令的参数,动态隔离环境, 启动命令:

flutter run -t lib/main.dart --dart-define=version=DEV

多个启动命令可以逗号隔开

--dart-define=version=DEV,city=xxx

这样的话,整个项目的环境隔离取决于启动命令,只要维护一份main.dart就可以了,另外可以再jenkins自动部署上启动命令加入动态参数,有利于维护。

2.自动部署

jenkins可以设置 Build with Parameters 将环境参数用于构建项目:version:xxx 这样的话,可以利用jenkins的web api 自己在web端发起构建请求,将环境参数带入请求动态部署所需的环境打包,我结合了打包成功自动上传云储的功能,这样自己构建web管理页面,将flutter打包部署集成一套api管理,方便开发测试上线流程化管理。

image.png

image.png

至于linux下flutter打包环境的安装,后续如有需要再分享,或者自己查一下应该就可以了。