node服务通过Jenkins上线流程
构建流程
- 构建服务器: 拉取指定分支代码
- 构建服务器: 安装依赖
- 构建服务器: 执行构建
- 构建服务器: 如果上线流程,则在 git 上创建 tag,供回滚使用
- 构建服务器:打包 node 服务代码,和静态资源代码
测试环境上线
- 构建服务器:执行构建
- jenkins:拉取打包好的静态资源和 node 服务代码
- jenkins: 静态资源部署到测试服务器
- jenkins: node 服务代码上传到测试服务器
- 测试服务器:启动服务(需要 root 权限来设置
host
)
沙箱环境上线
同测试环境上线流程
线上环境上线
- 构建服务器: 执行构建
- jenkins:拉取打包好的静态资源和 node 服务代码
- jenkins:静态资源代码上传到线上
- jenkins:CDN 刷新
- jenkins:node 服务代码上传到线上
- 线上机器:启动服务
项目约定与构建参数
发布流程的使用方式
传入代码分支与目标机器,服务即可部署到指定机器
项目约定
为了自动化程序能够顺利对项目进行构建,需要项目提供以下接口,接口命令可以为空,但是入口必须存在。
npm install
安装项目依赖,安装后的目录在项目根目录下的 node_modules
目录中,如果有其他依赖需要安装,需要在 postinstall
或 preinstall
中写明。安装阶段构建工具只调用 npm install
一条命令。
npm run build
对项目进行构建,如需对静态资源进行构建,一并在 build 命令中执行,如果存在静态资源,静态资源构建后的位置必须在项目文件夹内。
npm start
启动 node 服务,用于在目标机器上执行,请注意 npm start
命令中应当包含关闭正在运行的本服务和重新服务两步。
host 文件
如果需要对线上机器设置 host,测试环境和沙箱环境分别在 config/hosttest、config/hostsandbox 中写明,格式即为 host 格式。
重要
不要依赖线上全局命令
除了 pm2 以外,线上不提供其他全局命令,如果需要此类命令,请在项目中自行依赖
规范 Pm2 的使用
建议使用 pm2 启动服务,服务必须有应用名,在停止服务时,禁止使用 pm2 kill
,因为这个命令同时会关掉同机器上的其他服务
测试环境与沙箱环境的 host 设置
在某些 node 服务中,需要对环境的 host 进行设置,构建工具会读取项目中的 config/hosts.yaml 自动对 host 进行修改
Host
只配置在测试机上需要的 host, 如代理后端服务的 ip,不要配置如 cdn 地址等浏览器端的 host
build 和 start 命令
build 和 start 命令必须是可以正常退出的命令,watch 等模式,会阻塞构建发布流程的执行
构建参数
此处的参数用于在 jenkins 处填写 scm_project
填写项目在 gitlab.58corp.com 下的分组及名称,格式 “group/project” deploy_type
选择部署类型static_name
静态资源目录,支持子目录 online_machine
node 服务的线上资源地址,静态资源自动发布到对应目录下, 无需手动设置
node服务通过Jenkins上线流程的更多相关文章
- node服务成长之路
我们的系统也从第一代平台开始到现在第四代平台更换中,对这四代平台做一个简单的介绍: 第一代平台,主要是集中式,以快速上线为目的:第二代平台主要是分布式改造,缓解各服务压力:第三代平台主要做服务端SOA ...
- 海量用户-高并发SAAS产品测试上线流程
海量用户高并发SAAS产品测试上线流程 SAAS产品测试上线流程-以Web插件产品为例子 1 概述 在互联网产品中,IT公司之间更加注重产品功能之间的协作,SAAS形态的产品扮演着越来越重要的作用 ...
- Node服务一键离线部署
背景说明 项目测试通过,到了上线部署阶段.部署的机器安全限制比较严格,不允许访问外网.此外,没有对外网开放ssh服务,无法通过ssh远程操作. 针对上面提到的两条限制条件,通过下面方式解决: 无法访问 ...
- 重学 Java 设计模式:实战责任链模式「模拟618电商大促期间,项目上线流程多级负责人审批场景」
作者:小傅哥 博客:https://bugstack.cn - 原创系列专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 场地和场景的重要性 射击
- 微信小程序从开发到上线流程
一.微信小程序从开发到上线流程 注册小程序 1.登录微信公众平台 https://mp.weixin.qq.com 2.在微信公众平台>立即注册>小程序中注册微信小程序 3.在邮箱中激活并 ...
- node服务的监控预警系统架构
需求背景 目前node端的服务逐渐成熟,在不少公司内部也开始承担业务处理或者视图渲染工作.不同于个人开发的简单服务器,企业级的node服务要求更为苛刻: 高稳定性.高可靠性.鲁棒性以及直观的监控和报警 ...
- 玩转Windows服务系列——服务运行、停止流程浅析
通过研究Windows服务注册卸载的原理,感觉它并没有什么特别复杂的东西,Windows服务正在一步步退去它那神秘的面纱,至于是不是美女,大家可要睁大眼睛看清楚了. 接下来研究一下Windows服务的 ...
- 玩转Windows服务系列——服务运行、停止流程浅析
原文:玩转Windows服务系列——服务运行.停止流程浅析 通过研究Windows服务注册卸载的原理,感觉它并没有什么特别复杂的东西,Windows服务正在一步步退去它那神秘的面纱,至于是不是美女,大 ...
- 前端跨域方案-跨域请求代理(node服务)
前端开发人员在本地搭建node服务,调用接口首先走本地服务,然后转发到api站点,node服务代码如下: var express = require('express'), request = req ...
随机推荐
- js 判断图片是否存在
有的时候 虽然图片的路径是正确的 但是有可能由于某些原因 导致图裂了 或者网络加载失败 那这样的应该怎么判断呢? 如下: function isHasImg(pathImg){ var Img ...
- 微信小程序环境搭建(本地,测试,生产)
1.本地 官网文档链接:https://cloud.tencent.com/document/product/619/11442#.E6.9C.AC.E5.9C.B0.E5.A6.82.E4.BD.9 ...
- 日语能力考试N2必备训读动词
日语能力考试N2必备训读动词 ア合う——あう——「自」合一.合到一起.准确味わう——あじわう——「他」品味.品尝預かる——あずかる——「他」照顾.保管.承担預ける——あずける——「他」寄存.处理难以了 ...
- MySQL数据库数据类型以及INT(M)的含义
nt(M)我们先来拆分,int是代表整型数据那么中间的M应该是代表多少位了,后来查mysql手册也得知了我的理解是正确的,下面我来举例说明. MySQL 数据类型中的 integer types ...
- Ubuntu 双网卡route
ip route flush table sz ip route add default via 183.2.218.254 dev eth0 src 183.2.218.4 table sz ip ...
- Oracle 之 触发器
触发器是特定的事件出现的时候,自动隐式执行代码块,这个过程用户无法控制,用户只能控制触发的事件,触发后的操作,触发过程是自动执行的. 定义触发器: 1.名称 2.触发时间:是在执行事件之前(befor ...
- php产品细节图多图上传示例代码 无刷新
前台文件代码 upload.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " ...
- SQL代码
SELECT SCHEMA_NAME(SCHEMA_ID)AS ID,name as Table_name FROM sys.tables;--查询表视图 查询表视图
- JAVA利用递归的方法删除一个文件夹以及文件夹下所有的子文件
public static boolean deleteFolder(String url) { File file = new File(url); if (!file.exists()) { re ...
- 【SpringBoot】spring-session-data-redis 解决集群环境下session共享
为什么会产生Session共享问题 集群情况下,session保存在各自的服务器的tomcat中,当分发地址至不同服务时,导致sesson取不到,就会产生session共享问题. 解决方案 负载均 ...