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 ...
随机推荐
- Python的is和==区别
字符串比较 1.比较字符串是否相同: ==:比较两个字符串内的value值是否相同 is:比较两个字符串的id值. 以上结果不同 比较数字时不能使用is,结果有时是True,有时是False,is 相 ...
- redis远程连接配置
解决redis远程连接不上的问题 redis现在的版本开启redis-server后,redis-cli只能访问到127.0.0.1,因为在配置文件中固定了ip,因此需要修改redis.conf(有的 ...
- Proxy&Reflect
大部分时候我们使用的都是前置代理, 即我们把直接和代理对象进行交互(所有操作都发生在代理对象身上)的方式叫做前置代理. 那什么是后置代理? 借助原型链机制, 我们直接和 obj 进行交互而不是和代理对 ...
- 2019-11-29-Roslyn-打包自定义的文件到-NuGet-包
title author date CreateTime categories Roslyn 打包自定义的文件到 NuGet 包 lindexi 2019-11-29 08:23:21 +0800 2 ...
- Zookeeper客户端使用(使用zkclient)
Zookeeper客户端使用 二.使用zkclient 在pom.xml中加入依赖 <dependency> <groupId>com.101tec</groupId&g ...
- Linux系统中的硬件问题如何排查?(5)
Linux系统中的硬件问题如何排查?(5) 2013-03-27 10:32 核子可乐译 51CTO.com 字号:T | T 在Linux系统中,对于硬件故障问题的排查可能是计算机管理领域最棘手的工 ...
- hive中对子查询如in,exists等支持
案例情况:同事使用公司数据探查跑一段代码,部分代码如下,报错,显示不支持in内的子查询.但是直接用虚拟机去跑的话代码没有任何报错,也出结果,很奇怪. SELECT t1.SIGN_CODE AS bu ...
- pyqt5-QTDesigner--UI文件的使用方式
方式一:直接加载UI文件 from PyQt5.QtWidgets import QApplication, QWidget import sys class win(QWidget): def __ ...
- 迭代处理enum类会生成枚举的各个成员
import enum class BugStatus(enum.Enum): new = 7 incomplete = 6 invalid = 5 wont_fix ...
- 【GDOI2013模拟4】贴瓷砖
题目 A镇的主街是由N个小写字母构成,镇长准备在上面贴瓷砖,瓷砖一共有M种,第i种上面有Li个小写字母,瓷砖不能旋转也不能被分割开来,瓷砖只能贴在跟它身上的字母完全一样的地方,允许瓷砖重叠,并且同一种 ...