微信云托管 是由微信团队联合腾讯云推出的一站式后端云服务。对于应用开发采用前后端分离架构的场景,云托管可做到免运维免域名、免服务器管理、防 DDoS 攻击和境外加速等,从代码管理到 CI/CD 流水线部署发布,提供全链路、低成本、企业级的云原生解决方案。

PC 端访问 https://cloud.weixin.qq.com 即可立即开始使用微信云托管。

前言

在项目开发时,通常具有多种环境,用来在开发的各个流程阶段进行作用,比如预发、生产。

环境的不同,对应的数据库等配置信息就有所不同,就必须要针对配置信息的变更,对应创建单独的代码仓库,流水线对应一个代码仓库,这样维护成本太大。

在这里主要是配置信息的变化,本篇主要介绍如何在项目代码中动态感知所处的微信云托管环境,进而给予正确的配置信息。

一、环境变量

微信云托管在运行项目服务过程中,带入了一个环境变量,名称为 CBR_ENV_ID ,意义是当前运行服务所处的 微信云托管环境ID

所以在项目内部,可以通过获取 CBR_ENV_ID 变量,来感知当前项目在哪个环境运行。

二、划分环境

微信云托管的环境可以建立多个,单个环境下可以有多个服务,和单独的数据库以及对象存储,在客观条件上做了隔离。

所以可以用 微信云托管环境 为维度进行隔离,创建项目开发的各个环境(预发、生产)

最终我们可以得到一个清单,样式如下:

werun—id1 = '预发'
werun—id2 = '生产'

其中 werun—id 为微信云托管的环境ID。

三、配置代码
接下来将上述清单的配置写到项目代码中,以 nodejs 为例:

假设一开始我们的配置 config.js 是这样的:

module.exports = {"text":"开发环境"
}

为了简化在这里只有一个text,实际应用中,应该是数据库、存储、网络通信的配置信息,也就是需要根据环境区分的信息都要写到一块。

接下来,加上 CBR_ENV_ID 变量,来进行改造,代码如下:

const config = {'werun—id1': {text:'预发环境'},'werun—id2': {text:'生产环境'},NO: {text: '本地环境'}
}module.exports = function(env=null){const key = env || process.env.CBR_ENV_IDif(config[key] != null){return config[key]} else {return config.NO}
}

以上代码,将各个环境的配置信息统一囊括,然后根据 CBR_ENV_ID 变量来进行分发,如果没有预设的环境配置,则返回本地测试配置。

以上就已经做完了项目的动态配置改造,接下来我们开始配置流水线。

四、配置流水线

预发、生产环境在整体上应该保持一致,但在数据层面予以区分,所以两个环境在整体配置方面区别不大。

根据自己的业务需求,配置一个或若干个服务,选配数据库或对象存储等。

接下来我们重点来讲流水线的配置差异:

以上是新建流水线的信息框,两个环境的同一服务,应该配置相同的代码仓库、分支和目标目录。

在触发条件中,可以根据开发流程的不同稍有改变,合理选择是变更就触发还是定时触发;比如你每周三发布版本,那就按照计划选择定时触发就可以。

在发布策略中,因为生产环境要求稳定,所以不能直接全量发布,可以选择仅构建镜像,或者构建版本。

预发环境可以直接发全量发布,便于直接开始系统的体验测试,在测试通过后,就可以安排生产环境的灰度发布了。

五、环境流程建议

每个团队都有自己的开发测试流程和环境,请根据自身情况合理理解本篇内容。

传统开发模式下的开发测试流程在转移到微信云托管时需要有些变通,以下是一些建议:

1、开发环境:团队开发人员产出代码自测的环境,一般可以在本地PC开一个Docker容器挂载项目代码开发。容器镜像保证团队统一性,将极大的减少因为环境问题导致的联调失败。

2、测试、联调、回归环境:需要项目整体性的测试体验,在这里分形态来建议,项目形态上有 单一服务型 和 微服务 两种形态:

单一服务型:不管项目有多大,就一个服务运行,更新需要全部替换;这种情况下不建议将其放在微信云托管环境中联调测试,直接在本地测试和联调开发的效率会更高一些。因为只有内部业务互相调用,不涉及其他的服务(API接口、数据库、对象存储除外,本身属于外联通性)。

微服务形态:项目被拆分成不同的模块,每个模块服务独立运行,共同作用,更新只需要替换变更的;这种情况下建议放在微信云托管中测试,也就是变更的模块在经过测试,表现稳定的情况下,将其部署到微信云托管中,和其他服务一起做整体测试。

3、预发、生产环境:微信云托管中开单独的环境,如果需要预发环境连接生产环境数据库,可以设置两个环境内网联通,然后内网连接对应的数据库。

现在体验微信云托管,立享1个月免费额度:https://cloud.weixin.qq.com/cloudrun

微信云托管如何实现一套代码对应多个环境相关推荐

  1. 使用微信云托管快速部署一个.Net Core项目(一)

    前几天微信将小程序开发者工具内的云托管升级为微信云托管,新增了很多诸如OpenApi.MySql数据库.流水线构建.web控制台等能力.看文档还是蛮激动的,对开发者来说确实是个好消息,因为之前的一些业 ...

  2. 微信云托管常见问题FAQ(一)

    Q1: 云托管的时间相差8个小时? A:容器系统时间默认为 UTC 协调世界时间 (Universal Time Coordinated),与本地所属时区 CST (上海时间)相差 8 个小时: 在构 ...

  3. 【微信小程序】uniapp开发小程序如何使用微信云托管或云函数进行云开发

    一. 申请微信云托管 这个不用说吧必须的,官方地址在这.直接进去申请就行. 但是前提是你得会创建docker file,学习掌握一些基本的docker知识,会让你创建环境变得简单一点.环境创建完成之后 ...

  4. 小城里的“明星”产业,有微信云托管保驾护航

    小城故事多,充满喜和乐. 地处河南省最南端的信阳市是一座拥有600多万常住人口的中小型城市,四季分明,气候适宜,有"江南北国.北国江南"之美誉.信阳当地拥有众多娱乐设施,但其中有一 ...

  5. 从微信云托管容器镜像的选择-alpine 说起

    微信云托管 使用目前主流的容器平台Docker以及容器编排技术Kubernetes(简称K8S),来管理你的项目.使用微信云托管需要掌握对Docker的使用,但你无需掌握K8S的使用方法.微信云托管将 ...

  6. Spring Boot项目微信云托管入门部署

    Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/cou ...

  7. 微信云托管-填坑之旅

    微信云开发开始收费了,一个月20块钱,贼贵,用不起.而按用量收费.资源还能复用的兄弟产品微信云托管还像还行.所以就有了一场填坑旅行. windows10下安装docker之坑 在本地开发,需要使用do ...

  8. 搞了半天 微信云托管 就是个docker

    云托管的第一步 是 创建版本 在创建版本前,先在自己的开发机上,用本机的docker, 做好dockerfile 在写Dockerfile的时候 最好选好一个好的 基础镜像版本 如果没有 就自己做一个 ...

  9. Python+微信小程序开发(二)代码构成和宿主环境

    一.小程序代码构成 ​在上一篇文章中,我们通过开发者工具载入模板快速创建了一个QuickStart项目.这个项目里边生成了不同类型的文件: .json 后缀的 JSON 配置文件 .wxml 后缀的  ...

最新文章

  1. python画直方图代码-python的pyecharts绘制各种图表详细(附代码)
  2. java list 分组_Java 将List中的实体类按照某个字段进行分组并存
  3. 信息学奥赛一本通 1151:素数个数
  4. CI/CD是什么?如何理解持续集成、持续交付和持续部署
  5. mysql用户权限与安全实例_mysql用户权限管理实例分析
  6. [Python] 函数来判断一个对象是否是一个已知的类型:isinstance(object, classinfo)
  7. 安卓自定义相机拍照功能全解(不调用系统相机)
  8. Angular6 依赖注入
  9. slam的回顾(一)
  10. 小D课堂 - 零基础入门SpringBoot2.X到实战_第10节 SpringBoot整合定时任务和异步任务处理_41、SpringBoot定时任务schedule讲解...
  11. 网易云音乐UC!缓存格式文件转MP3方法
  12. 热释电红外传感器电路
  13. 计算机行业未来作文,未来的计算机作文
  14. BP算法(神经网络基础+BP算法推导+BP算法举例+java代码实现+Python代码实现+局限性)
  15. STM32的USART1用DMA方式发送数据
  16. kali使用外接usb蓝牙
  17. 敏捷开发思想之拥抱变化
  18. 【C语言】一文彻底理解指针,通俗易懂
  19. 二、关于做地图和如何做成mod
  20. android user-agent iso-8859-1,微信大众,平台消息接口开辟(31)微信浏览器HTTP_USER_AGENT断定...

热门文章

  1. win10连接网络共享打印机出现没有当前打印机所需要的驱动
  2. 注册测绘师将与测绘资质单位挂钩
  3. 南大男生课堂表白牵走女生 老师送上祝福(图)
  4. ffmpeg文件无法下载
  5. ArcGIS - 制作专题地图
  6. C语言课设(电影系统管理)
  7. macOS Monterey 12.0.1 App闪退问题
  8. Python根据手机号码批量获取归属地/区号/邮编/运营商
  9. 河北移动保号套餐推荐
  10. 墨仓式进入2.0时代?爱普生商用墨仓式L4158试用