Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >微信云托管如何实现一套代码对应多个环境

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

原创
作者头像
腾讯云开发TCB
发布于 2021-10-12 10:20:01
发布于 2021-10-12 10:20:01
1K00
代码可运行
举报
运行总次数:0
代码可运行

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

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

前言

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

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

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

一、环境变量

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

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

二、划分环境

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

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
werun—id1 = '预发'
werun—id2 = '生产'

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

三、配置代码

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
module.exports = {
  "text":"开发环境"
}

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

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
微信云托管如何实现一套代码对应多个环境
导语 微信云托管 是由微信团队联合腾讯云推出的一站式后端云服务。对于应用开发采用前后端分离架构的场景,云托管可做到免运维免域名、免服务器管理、防 DDoS 攻击和境外加速等,从代码管理到 CI/CD 流水线部署发布,提供全链路、低成本、企业级的云原生解决方案。 PC 端访问 https://cloud.weixin.qq.com 即可立即开始使用微信云托管。 前言 在项目开发时,通常具有多种环境,用来在开发的各个流程阶段进行作用,比如预发、生产。 环境的不同,对应的数据库等配置信息就有所不同,就必须要
腾讯云开发TCB
2023/03/30
7510
微信云托管如何实现一套代码对应多个环境
从0快速部署一个云托管服务:Java 篇
欢迎使用微信云托管,本文将带领你通过云托管创建一个服务,并在小程序和 WEB 端调用此服务(以 Java 为例),本系列会继续更新 PHP、Golang 等其他语言的部署教程(当然,你也可以使用云托管的一键部署功能,基于 Java 语言 Spring Boot 框架部署一个服务)。
腾讯云开发TCB
2022/01/06
1.7K0
从0快速部署一个云托管服务:Java 篇
从0快速部署一个云托管服务: Node.JS 篇
欢迎使用微信云托管,本文将带领你通过微信云托管创建一个服务,并在小程序和 WEB 端调用此服务(以 Node.JS 为例),本系列会继续更新 Java、PHP、Golang 等其他语言的部署教程(当然,你也可以使用云托管的一键部署功能,基于 Node.js 语言 Express 框架部署一个服务)。
腾讯云开发TCB
2022/01/06
1.6K0
从0快速部署一个云托管服务: Node.JS 篇
从0快速部署一个云托管服务:Python 篇
欢迎使用微信云托管,本文将带领你通过云托管创建一个服务,并在小程序和 WEB 端调用此服务(以 Python 为例),本系列会继续更新 PHP、Golang 等其他语言的部署教程(当然,你也可以使用云托管的一键部署功能,基于 Python 语言 Django 或 Flask 框架部署一个服务)。
腾讯云开发TCB
2022/01/21
2.7K0
从0快速部署一个云托管服务:Python 篇
DevOps |研发效能之环境、程序、配置、SQL变更管理
几天前和一个朋友聊到环境、程序的配置变更,SQL变更和整个上线流程。之前我们在这块也做了很多,有做的好的也有做的一般的,借机都总结下来,希望对你有用。
laofo
2023/09/05
3760
DevOps |研发效能之环境、程序、配置、SQL变更管理
微信云托管热点问题Q&A
微信云托管是由微信团队联合腾讯云推出的后端项目全托管服务。对于微信生态应用开发采用前后端分离架构的场景,云托管可做到免运维免服务器管理,从代码管理到CI/CD流水线部署发布,提供全链路、低成本、企业级的云原生解决方案。
腾讯云开发TCB
2021/06/29
7430
微信云托管热点问题Q&A
这样上线项目,轻轻松松~
大家好,我是程序员鱼皮。经过一个月的奋斗(肝疼),我的新项目鱼答答 AI 答题应用平台已经完结~
程序员鱼皮
2024/08/08
1960
这样上线项目,轻轻松松~
实战 | 如何使用微信云托管快速部署后端服务
微信云托管是为开发者提供的云原生全托管的容器后端云服务,控制台界面简洁,操作便捷,并且为开发者首个环境赠送1个月的免费额度,果断创建环境来试一试。
腾讯云开发TCB
2021/08/13
6.3K0
实战 | 如何使用微信云托管快速部署后端服务
使用微信云托管快速部署一个.Net Core项目(一)
前几天微信将小程序开发者工具内的云托管升级为微信云托管,新增了很多诸如 OpenApi、MySql 数据库、流水线构建、web 控制台等能力。看文档还是蛮激动的,对开发者来说确实是个好消息,因为之前的一些业务逻辑大都写在云函数或者部署在服务器里面,要管理好几套。看了这次发布的微信云托管有点动心要做一个迁移,微信云托管相比其它模式来说还是很有优势和前景的。关于微信云托管和云函数以及服务器、Kubernetes 的对比大家看这个链接就够了:https://developers.weixin.qq.com/miniprogram/dev/wxcloudrun/src/basic/intro.html
腾讯云开发TCB
2021/07/07
8550
使用微信云托管快速部署一个.Net Core项目(一)
微信云托管功能更新周报:静态资源存储、对象存储安全域名等
以下是 微信云托管 本周更新公告(2021.12.17~12.24),公告将围绕微信云托管新增能力、功能优化等产品动态每周更新,帮助微信开发者更好地了解和使用云托管。微信云托管官网:
腾讯云开发TCB
2022/01/06
1.8K0
微信云托管功能更新周报:静态资源存储、对象存储安全域名等
「一文读懂」微信云托管
微信云托管是微信团队联合腾讯云推出的后端项目全托管服务。对于微信生态应用开发采用前后端分离架构的场景,云托管可做到免运维免服务器管理,从代码管理到CI/CD流水线部署发布,提供全链路、低成本、企业级的云原生解决方案。
腾讯云开发TCB
2021/07/05
4.9K0
「一文读懂」微信云托管
微信发力了,一键部署网站后端!
还记得么?之前我全程直播带大家从 0 到 1 做了一个包含前端、后端的 表情包网站项目 ,支持搜索表情、自由裁切下载、给表情包配字等功能。
程序员鱼皮
2022/01/05
4.5K1
微信发力了,一键部署网站后端!
从0快速部署一个云托管服务:Golang 篇丨含限量红包封面
欢迎使用微信云托管,本文将带领你通过云托管创建一个服务,并在小程序端调用此服务(以 Golang 为例),本系列会继续更新 PHP 部署教程(当然,你也可以使用云托管的一键部署功能,基于 golang 语言搭建 HTTP服务端实例)。
腾讯云开发TCB
2022/01/27
8130
从0快速部署一个云托管服务:Golang  篇丨含限量红包封面
使用腾讯云托管部署前端项目 | 云托管征文
最近腾讯云和微信团队联合推出的后端上云新姿势——微信云托管!可以使用开源模版,也可以直接使用Git项目来进行项目构建部署。并且是免运维的,无需服务器,1分钟部署小程序/公众号/网站服务端。周末抽时间体验了一下,下面以部署一个前端项目为例,来简单展示一下云托管的使用方法。目前云托管是免费额度,大家可放心体验。
拿我格子衫来
2022/02/19
17.3K2
使用腾讯云托管部署前端项目 | 云托管征文
微信云托管资源包与技术支持能力发布
微信云托管已正式推出资源包,业务选择更加灵活,使用微信云托管,全程可获得1v1技术支持,更有企业激励计划,提供万元补贴、专家迁移服务等。
腾讯云开发TCB
2021/08/16
1.2K0
微信云托管资源包与技术支持能力发布
「微信云托管」首篇实战|极简DEMO入门
此项目基于微信云托管能力范围编写,构建了一个简单的 WEB 后端服务,统计 WEB 网页的访问日志,并保存至 serverless 形态的 mysql 数据库中,然后在小程序中调用服务接口,获得访问次数。
腾讯云开发TCB
2021/06/25
1.1K0
「微信云托管」首篇实战|极简DEMO入门
直播预约:微信云托管「云调用」能力使用指南
微信云托管 是由微信团队联合腾讯云推出的一站式后端云服务。对于应用开发采用前后端分离架构的场景,云托管可做到 免运维免域名、免服务器管理、防 DDoS 攻击和 境外加速 等,从代码管理到 CI/CD 流水线部署发布,提供全链路、低成本、企业级的云原生解决方案。
腾讯云开发TCB
2021/10/26
7910
直播预约:微信云托管「云调用」能力使用指南
直播预约:云托管 or 云函数,业务如何做好技术选型?
云开发者较为熟悉的CloudBase云函数和基于容器技术的微信云托管: 分别有哪些优势? 应用场景有何异同? 如何根据自身业务需求选择最合适的技术? 本期微信云托管「从入门到精通」系列直播将详细对比和分析云托管和云函数技术,并解答开发者关心的常见问题。 直播时间: 10月13日(周三) 19:00 分享嘉宾: 李冠宇,微信云托管、云开发产品经理、架构师  直播地址: 视频号(横屏观看更清晰) Bilibili https://live.bilibili.com/21571381 往期回顾(点击文末阅
腾讯云开发TCB
2023/03/30
5630
直播预约:云托管 or 云函数,业务如何做好技术选型?
微信云托管功能更新周报:一键部署新模板、支持公众号Web SDK调用等
以下是 微信云托管 本周更新公告(2021.12.3~12.10),公告将围绕微信云托管新增能力、功能优化等产品动态每周更新,帮助微信开发者更好地了解和使用云托管。微信云托管官网:
腾讯云开发TCB
2022/01/06
6630
微信云托管功能更新周报:一键部署新模板、支持公众号Web SDK调用等
云托管功能周报:支持自动清理旧版本及镜像、资源复用功能即将上线(2.18-2.25)
各位微信开发者:以下是微信云托管本周更新公告(2022.2.18-2.25),公告将围绕微信云托管新增能力、功能优化等产品动态每周更新,帮助微信开发者更好地了解和使用云托管。新能力:自动清理旧版本及镜像
腾讯云开发TCB
2022/03/03
4380
云托管功能周报:支持自动清理旧版本及镜像、资源复用功能即将上线(2.18-2.25)
推荐阅读
相关推荐
微信云托管如何实现一套代码对应多个环境
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验