前端自动化部署系统

现在的前端静态资源在测试, 线上环境部署起来比较繁琐, 同时也比较麻烦, 现在针对这些问题提出一些解决方案.

目前发布方式

  1. 通过fis打包, 手动压缩上传到共享目录

  2. 运维(测试)取包, 通过ftp上传到服务器

  3. 备份旧文件, 手动删除文件

  4. 将包解压到指定目录

问题:

  1. 纯体力活, 步骤繁琐, 且手动操作过多

  2. 需要对服务器部署目录有一定的了解, 对新人不友好

  3. 备份, 回滚都需要手动操作, 容易出问题

  4. 删除文件的过程中, 如有用户访问会出现页面打不开的情况

  5. 不支持非覆盖式发布

  6. 不支持差异化打包, 例如: 测试线, 预发布, 现网

解决方案

jenkins自动化部署

  1. 开发人员提交代码,gitlab触发webhook,推送信息到jenkins

  2. jenkins根据推送的信息执行对应的job

  3. job中的脚本clone对应的分支,调用构建工具对代码进行构建

  4. 对应指定目录, 编写脚本自动备份

  5. 使用运维脚本将构建完成的结果部署到测试/生产服务器

  6. 部署完成后, 执行指定脚本删除冗余文件

前端自动化部署系统_第1张图片
QQ截图20170104095803.png

可视化自动部署

  1. 开发提交代码, 在自动化系统上填写相应的分支, 点击部署按钮

  2. 系统从指定的分支上拉取代码

  3. 执行自动化备份脚本, 对相应的项目进行备份

  4. 通过fis对拉取下来的代码进行构建, 并部署到指定目录

  5. 部署完成后, 执行指定脚本删除冗余文件

回滚

  1. 在系统相应的项目中, 找到相应的备份版本, 点击恢复

  2. 执行脚本将相应的备份包恢复到指定目录

  3. 恢复完成后, 执行指定脚本删除冗余文件

前端自动化部署系统_第2张图片
QQ截图20170104095815.png

数据字典

项目数据体
  {
    _id: "514197562128205e66000011",
   name: "情人节",                                     //项目名称
   path: "1jLwrR"                                       //项目的主目录
   branch: "jinrui_v3.0",                             //分支
   home: "qrj/index.html",                          //项目首页
   domain: "www.xiaoniuapp.com",           //域名
   type: 100,                                              //项目类型, 100: 常规活动, 200: 固化活动, 300: 常规项目   
   status: 0,                                              //状态 0: 未上线(默认状态), 100: 已上线, 200: 已下线, 300: 已删除 
   time: 1460430231740                         //创建时间(时间戳)  
}
文件数据体
{
    _id: "514197562128205e66000011",        //主键ID
    num: 15,                                //文档编号
    path: "common_ui_31ca387.js"            //文档路径
    p_num: 8,                                //父文档编号
    type: 300,                              //文档类型 (枚举值 100:文件夹, 200:html文件, 300:js文件, 400:css文件, 500:图片)
    project_id: "571f0a44d405a65c2b8e0255",  //项目ID
    extension: "js",                        //文档扩展名
    time: 1460430231740                     //创建时间(时间戳)  
}
项目备份列表
 {
    _id: "514197562128205e66000011",     // 主键
   project_id: "514197562128205e66000011",    //项目id
   file_path:  "20160526.zip",     //备份包路径
   time: 1460430231740,    //备份时间 
   user:  "admin"     //操作用户
}
图片数据体
{
   _id: "514197562128205e66000011",
  file_name: "LLQouNoww8_yKZxTv71tj4DY.jpg",               //图片文件名
  file_path: "photo/2016/3/LLQouNoww8_yKZxTv71tj4DY.jpg",  //图片路径
  file_size: 10455,                                        //文件大小
  file_type: "jpg",                                        //文件类型
  type:  100,                                               //图片类型, 100: 活动,  200: 新闻/消息, 300: 系统   
  time: 1460430231740                      //创建时间(时间戳)   
}
用户数据体
 {
    _id: "514197562128205e66000011",
    username: "aerojin",                            //用户名
    password: "e10adc3949ba59abbe56e057f20f883e",   //密码
    role_id: "514197562128205e66000011", //角色Id
    time: 1460430231740                             //创建时间(时间戳)   
}
权限数据体
 {
    _id: "514197562128205e66000011", //主键
    num: 1,           //编号            
    key: 100,                            //外键
    p_num: 0    //父类编号
    name: "上传图片",     //权限名称
    route: "/api/remove", //权限接口
    time: 1460430231740    //创建时间(时间戳)   
}
角色数据体
 {
    _id: "514197562128205e66000011", //主键
    name: "开发",                            //角色名称
    authority: ["514197562128205e66000011", ...],     //权限列表
    time: 1460430231740    //创建时间(时间戳)   
}
系统配置
 {
    _id: "514197562128205e66000011", //主键
    key: "XN_UPLOAD_IMAGE_PATH",         //配置key值
    value: "/data/static/img/",                           //配置对应的值
    remark: "图片上传路径",                           //备注
    time: 1460430231740    //创建时间(时间戳)   
}

你可能感兴趣的:(前端自动化部署系统)