构建流程

  1. 构建服务器: 拉取指定分支代码
  2. 构建服务器: 安装依赖
  3. 构建服务器: 执行构建
  4. 构建服务器: 如果上线流程,则在 git 上创建 tag,供回滚使用
  5. 构建服务器:打包 node 服务代码,和静态资源代码

测试环境上线

  1. 构建服务器:执行构建
  2. jenkins:拉取打包好的静态资源和 node 服务代码
  3. jenkins: 静态资源部署到测试服务器
  4. jenkins: node 服务代码上传到测试服务器
  5. 测试服务器:启动服务(需要 root 权限来设置 host)

沙箱环境上线

同测试环境上线流程

线上环境上线

  1. 构建服务器: 执行构建
  2. jenkins:拉取打包好的静态资源和 node 服务代码
  3. jenkins:静态资源代码上传到线上
  4. jenkins:CDN 刷新
  5. jenkins:node 服务代码上传到线上
  6. 线上机器:启动服务

项目约定与构建参数

发布流程的使用方式

传入代码分支与目标机器,服务即可部署到指定机器

项目约定

为了自动化程序能够顺利对项目进行构建,需要项目提供以下接口,接口命令可以为空,但是入口必须存在。

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上线流程的更多相关文章

  1. node服务成长之路

    我们的系统也从第一代平台开始到现在第四代平台更换中,对这四代平台做一个简单的介绍: 第一代平台,主要是集中式,以快速上线为目的:第二代平台主要是分布式改造,缓解各服务压力:第三代平台主要做服务端SOA ...

  2. 海量用户-高并发SAAS产品测试上线流程

    海量用户高并发SAAS产品测试上线流程 SAAS产品测试上线流程-以Web插件产品为例子 1   概述 在互联网产品中,IT公司之间更加注重产品功能之间的协作,SAAS形态的产品扮演着越来越重要的作用 ...

  3. Node服务一键离线部署

    背景说明 项目测试通过,到了上线部署阶段.部署的机器安全限制比较严格,不允许访问外网.此外,没有对外网开放ssh服务,无法通过ssh远程操作. 针对上面提到的两条限制条件,通过下面方式解决: 无法访问 ...

  4. 重学 Java 设计模式:实战责任链模式「模拟618电商大促期间,项目上线流程多级负责人审批场景」

    作者:小傅哥 博客:https://bugstack.cn - 原创系列专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 场地和场景的重要性 射击

  5. 微信小程序从开发到上线流程

    一.微信小程序从开发到上线流程 注册小程序 1.登录微信公众平台 https://mp.weixin.qq.com 2.在微信公众平台>立即注册>小程序中注册微信小程序 3.在邮箱中激活并 ...

  6. node服务的监控预警系统架构

    需求背景 目前node端的服务逐渐成熟,在不少公司内部也开始承担业务处理或者视图渲染工作.不同于个人开发的简单服务器,企业级的node服务要求更为苛刻: 高稳定性.高可靠性.鲁棒性以及直观的监控和报警 ...

  7. 玩转Windows服务系列——服务运行、停止流程浅析

    通过研究Windows服务注册卸载的原理,感觉它并没有什么特别复杂的东西,Windows服务正在一步步退去它那神秘的面纱,至于是不是美女,大家可要睁大眼睛看清楚了. 接下来研究一下Windows服务的 ...

  8. 玩转Windows服务系列——服务运行、停止流程浅析

    原文:玩转Windows服务系列——服务运行.停止流程浅析 通过研究Windows服务注册卸载的原理,感觉它并没有什么特别复杂的东西,Windows服务正在一步步退去它那神秘的面纱,至于是不是美女,大 ...

  9. 前端跨域方案-跨域请求代理(node服务)

    前端开发人员在本地搭建node服务,调用接口首先走本地服务,然后转发到api站点,node服务代码如下: var express = require('express'), request = req ...

随机推荐

  1. npm学习(五)之使用package.json

    使用package.json 管理本地安装的npm包的最佳方法是创建一个package.json文件. 一个packagejson文件: 列出项目所依赖的包. 允许使用语义版本控制规则指定项目可以使用 ...

  2. c字符串函数

    1.  bcmp(3) 类ma似于strncmp(3) 但是比较结果不一定是两个字符的ascii码之差. 返回值:相等0,不相等非零(不一定是-1) 2.bcopy(3)类ma似于strncpy(3) ...

  3. u-boot v2018.01 启动流程分析

    https://blog.csdn.net/weixin_39655765/article/details/80058644#jump1 make smdkc100_defconfig     以被默 ...

  4. VUE+DJANGO

    1.router类型不能设置为history const router = new Router({ mode: '', routes, }); //避免打包到django后刷新报错 2.样式放sta ...

  5. Java 集合类库

    java类库的基本结构 Iterable public interface Iterable<T> 实现这个接口允许对象成为 "foreach" 语句的目标. 也就是说 ...

  6. 如何使用windows performance recorder

    先下载WPA TOOLS:从该地址下载,选最新的版本,然后可以只选择下载WPA工具 后面编写XML文件等等,可以参考这篇文章. 需要注意: 用管理员启动cmd后,如果想运行特定路径的文件,需要带上绝对 ...

  7. Hadoop中配置环境后重启失效解决方法

    Ubuntu下设置环境变量有三种方法,一种用于当前终端,一种用于当前用户,一种用于所有用户: 一:用于当前终端: 在当前终端中输入:export PATH=$PATH:<路径> 不过上面的 ...

  8. 容器"共享"宿主机的hosts文件(终极方案)

    0.背景 有时候制作docker镜像生成容器时需要宿主机的hosts文件共享到容器中.首先想的是通过挂载的方式共享hosts文件,但是实践时发现根本行不通,hosts文件在/etc/目录下,如进行挂载 ...

  9. sql server 表2字段更新到表1,mysql

    UPDATE kingdee_pro_stock set kingdee_pro_stock.org_name=ERP_BASIC_BILLNO_PREFIX.org_name,kingdee_pro ...

  10. JS几种数组遍历方式总结

    JS数组遍历的几种方式 JS数组遍历,基本就是for,forin,foreach,forof,map等等一些方法,以下介绍几种本文分析用到的数组遍历方式以及进行性能分析对比 第一种:普通for循环 代 ...