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 ...
随机推荐
- Intellij IDEA 最全实用快捷键整理
正文前: 1. IDEA内存优化(秒开的快感!!) 因机器本身的配置而配置: \IntelliJ IDEA8\bin\idea.exe.vmoptions // (根据你的配置变大!!) ------ ...
- 关于 i++ 和 ++ i
先看一下代码,猜想一下输出值 @Testpublic void test() { int i =1; int a,b=0; i++; a=(i++); System.out.println(a); S ...
- “\xef\xbb\xbf”爬坑记录
今天早上帮同事写了脚本,大致功能:从文本中读取域名,加密存储成按照自己定义的格式.但是一个简单的代码居然出现了错误.初始的代码如下: # coding:utf-8 import hashlib imp ...
- 四、Vue CLI-异步请求(axios)
一.模块的安装 npm install axios --save #--save可以不用写 如图: 二.配置main.js import axios from 'axios' Vue.prototyp ...
- 修改或删除windows上的git用户凭证信息
参考博客:https://blog.csdn.net/qq_42249896/article/details/85207865
- 怎样减少 Android 应用包 60% 的大小?
简评: 应用的大小也是用户体验的一个重要方面,而减少 Android 应用安装包大小其实一点也不复杂. 对于移动应用来说,应用安装包的大小当然是越小越好.特别是对于一些欠发达地区,你不希望用户因为手机 ...
- 摘抄 <关于 作为>
出路在哪里?出路在于思路! 其实,没有钱.没有经验.没有阅历.没有社会关系,这些都不可怕.没有钱,可以通过辛勤劳动去赚:没有经验,可以通过实践操作去总结:没有阅历,可以一步一步去积累:没有社会关系,可 ...
- HDU - 1024 Max Sum Plus Plus 最大m段子段和+滚动数组优化
给定n个数字,求其中m段的最大值(段与段之间不用连续,但是一段中要连续) 例如:2 5 1 -2 2 3 -1五个数字中选2个,选择1和2 3这两段. dp[i][j]从前j个数字中选择i段,然后根据 ...
- redux 中的 redux-thunk(中间件)
前言 空闲时间把redux中的redux-thunk中间件回顾下,因为以前没有写博客的习惯,都怪自己太年轻,好了 其实: redux的核心概念其实很简单:将需要修改的state都存入到sto ...
- JAVA笔记18-容器之二增强的for循环(不重要)
JDK1.5增强的for循环(foreach??)