如何实现一套代码区分dev/prod环境
收藏
我的收藏介绍
抖音云为开发者提供了DEV(测试环境)、PROD(线上环境)分别用于测试和正式对外提供服务。
通常情况下,测试环境和线上环境使用的数据(数据存储)、配置等都是不同的。如果需要使用两套代码分别用于测试和上线,极为不便;同时为了保证线上的准确性,PROD环境只能使用DEV环境部署生成的版本进行部署。
为了解决使用一套代码部署两个环境的问题,抖音云提供了环境变量来帮助开发者区分环境。
环境变量
小提示:如果编辑环境变量,需要进行发布后才能生效,并且抖音云默认注入的环境变量无法编辑。
抖音云提供用户在部署服务时配置环境变量的能力,同时也会默认为用户注入环境、服务相关的环境变量。
- 1.登录抖音云控制台,并选择目标小程序和服务。
- 2.点击左侧侧边栏【部署发布】-【服务设置】,进入服务设置页面,下图中展示的就是服务中注入的环境变量。
区分环境
开发者需要通过判断"CLOUD_ENV"这个环境变量用于区分当前环境。
- •变量为"DEV"时代表测试环境(dev)
- •变量为"PROD"时代表线上环境(prod)
代码样例
建议在服务初始化时判断环境,如有异常直接退出
下面以golang获取和判断环境作为样例
const ( ProdEnv = "PROD" DevEnv = "DEV" ) env := os.Getenv("CLOUD_ENV") var isProd bool if env == ProdEnv { // 线上环境 isProd = true } else if env == DevEnv { // 线下环境 isProd = false } else { // 异常情况请联系oncall err := fmt.Errorf("invalid env: %s", env) fmt.Printf("%+v init env failed, err: %+v", err) panic(err) }
研发流程(推荐)
- 1.开发阶段
开发阶段中,用户可以在本地使用抖音云本地调试插件进行调试。
调试阶段中遇到问题的情况会比较多,经常需要修改后再调试,相比于部署到DEV环境,直接在本地调试,更方便,并且速度更快;使用插件也一样可以与抖音云DEV环境的组件进行联调;同时也可以使用插件将调试好的代码直接部署到抖音云DEV环境,并进入研发流程的下一个阶段——测试阶段。
- 2.测试阶段
在测试阶段中,用户可以使用抖音云本地调试插件将代码一键部署到DEV环境,也可以选择Git部署/镜像部署方式进行发布,之后再进行测试。
- 3.上线阶段
在测试阶段验证没有问题后,在PROD环境选择DEV环境测试没有问题的版本进行发布,然后就可以通过自定义域名或者小程序SDK访问的方式对外提供服务了。