构建流程
- 构建服务器: 拉取指定分支代码
- 构建服务器: 安装依赖
- 构建服务器: 执行构建
- 构建服务器: 如果上线流程,则在 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 服务的线上资源地址,静态资源自动发布到对应目录下, 无需手动设置