微信云托管 是由微信团队联结腾讯云推出的一站式后端云服务。对于利用开发采纳前后端拆散架构的场景,云托管可做到免运维免域名、免服务器治理、防 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_ID
if(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