热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:前后端分离的工作流:在项目中引入持续集成

本文由编程笔记#小编为大家整理,主要介绍了前后端分离的工作流:在项目中引入持续集成相关的知识,希望对你有一定的参考价值。
本文由编程笔记#小编为大家整理,主要介绍了前后端分离的工作流:在项目中引入持续集成相关的知识,希望对你有一定的参考价值。








前言


在前端后分离的背景下,


前端工程师的职责进一步扩大,


以往不需要关心的代码部署环节,


也开始变成工作的一部分。


传统的人工发布方式,


已经不能满足日益工程化的前端工作流。


本文分析了现有工作流的问题,


依托Git Flow 和GitLab CI,


提出了在项目中引入持续集成的方案





几个概念


传统后端主导项目(简称:传统项目):


前端交付静态页面,后端套页面写逻辑;


前后端分离项目:


一般是SPA(Single Page Application)应用,


前端写逻辑,


后端仅提供数据接口和入口页面;


前端源码仓库:


现在一般都托管在gitlab上,


存放未经构建的前端源码;


产品仓库:


一般是后端svn/git仓库,


前端资源独立部署的项目除外;



















传统项目工作流














适用于站点类项目。


这类项目通常对seo有要求。




















问题分析













重度依赖后端环境(后端或运维维护),


一旦出现问题只能等;


重度依赖人工部署(后端发,没有钩子的联调环境你懂的),


沟通成本高;


通常是在联调阶段才能发现问题;


缺乏自动化测试流程;





















前后端分离工作流








前后端分离的工作流:在项目中引入持续集成







适用于Web App、WebView客户端或管理平台项目。


这类项目通常交互复杂度较高,对用户体验和视觉呈现有较高要求。




















问题分析












度依赖本地开发环境,


要想在不同机器搭建一模一样的环境,


需要精力和RP;


地开发环境与生产环境有差异


(windows vs linux),


代码正确性无法保证;


然依赖人工部署


(从后端发变成了前端发),


容易出现误操作;


乏自动化测试流程;
























前端开发工作流








前后端分离的工作流:在项目中引入持续集成

























一些变化










在产品仓库直接开发,

过渡到了拥有自己的源码库;

依赖后端发布代码,

过渡到了我们也有了发布权限;

端开发的复杂度越来越高,

项目渗透度越来越高;

后端分离的趋势越来越明显;




 


但是,


构建工具的引入,


一定程度上提高了开发效率,


但远远不够。


我们maybe也许开始进入大前端时代




引入持续集成


持续集成


(ContinuousIntegration)


指的是,


频繁地(一天多次)将代码集成到主干;


持续交付


(ContinuousDelivery)


指的是,


频繁地将软件的新版本,


交付给质量团队或者用户以供评审


持续部署


(ContinuousDeployment)


是持续交付的下一步,


指的是代码通过评审以后,


自动部署到生产环境


 


为什么要引入持续集成


让我们看三个小故事















故事1








前后端分离的工作流:在项目中引入持续集成





上面的故事告诉我们: 
永远不要忽视环境的差异






























故事2








前后端分离的工作流:在项目中引入持续集成





上面的故事告诉我们: 
人工发包有风险,


请先更新本地代码再打包

























故事3








前后端分离的工作流:在项目中引入持续集成





上面的故事告诉我们: 
求人不如求己,


自己动手丰衣足食





















用 GitLab CI 进行持续集成






GitLab CI 是GitLab v8.0开始配套的持续集成工具


流程设计


设计原则


保证简单易执行,支持流程定制;


支持持续集成,降低人工误操作风险;


倡导DevOps;


Git分支划分


这里以Git Flow为例,


主分支


master分支(必须)


主干分支,用于保存当前稳定版本。


建议每一个稳定版本打一个tag


dev分支(必须)


主开发分支,


用于主功能开发、测试bug修复等。


基于master分支,最后 merge 到master分支


test分支(必须)


提测分支,用于保存提测版本。


基于master分支,最后merge到master分支


 


其他分支


feature-*分支


特性分支,用于特性功能开发。


基于master分支,最后 merge 到devmaster分支


hotfix-*分支


bug修复分支,用于修复线上紧急bug。


基于master分支,最后 merge 到master分支







开发联调流程















流程图








前后端分离的工作流:在项目中引入持续集成





















CI干啥了








前后端分离的工作流:在项目中引入持续集成

















测试流程














流程图








前后端分离的工作流:在项目中引入持续集成



























CI在干啥








前后端分离的工作流:在项目中引入持续集成


















上线流程













流程图








前后端分离的工作流:在项目中引入持续集成




























CI干了啥

























作者说:

我讲完了,




推荐阅读
  • x86x64体系探索及编程(对x86处理器介绍得最详尽又最具实践指导意义的一本书)邓志著ISBN978-7-121-18176-42012年10月出版定价:119.00元16开840页对x86处理 ... [详细]
  • 自定义窗口实现同时按照计数和时间(processing-time)触发计算 TriggersA Trigger determineswhenawindow(asformedbyth ... [详细]
  • 编者按:来自自江民科技的消息称,该公司创始人王江民近日因病去世,享年59岁,为了纪念这位中国反病毒事业的知名专家与老前辈,现摘录来自刘韧在知识英雄系列中采访其的一篇文章 王江民,著名的反病毒专家 ... [详细]
  • Givens1,s2,s3,findwhethers3isformedbytheinterleavingofs1ands2.Forexample,Given:s1aabcc ... [详细]
  • iometer 1.1.0 重要特性说明之Write IO Data Pattern
    iometer1.1.0版本包含了3种WriteIODataPattern。分别是:Repeatingbytes、Pseudo-Random(2006.07.27及其之前的版本默认 ... [详细]
  • MySQL的SQL语句写法,除了那些基本的之外,还有一些也算比较常用的,这里记录下来,以便以后查找。好记性不如烂笔头& ... [详细]
  • Docker基础和常用命令详解_docker
    这篇文章主要介绍了Docker基础和常用命令方法的相关资料, ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文介绍了如何清除Eclipse中SVN用户的设置。首先需要查看使用的SVN接口,然后根据接口类型找到相应的目录并删除相关文件。最后使用SVN更新或提交来应用更改。 ... [详细]
  • intellij idea的安装与使用(保姆级教程)
    intellijidea的安装与使用(保姆级教程)IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(gi ... [详细]
  • This article discusses the efficiency of using char str[] and char *str and whether there is any reason to prefer one over the other. It explains the difference between the two and provides an example to illustrate their usage. ... [详细]
  • 本文介绍了在Python张量流中使用make_merged_spec()方法合并设备规格对象的方法和语法,以及参数和返回值的说明,并提供了一个示例代码。 ... [详细]
  • ShiftLeft:将静态防护与运行时防护结合的持续性安全防护解决方案
    ShiftLeft公司是一家致力于将应用的静态防护和运行时防护与应用开发自动化工作流相结合以提升软件开发生命周期中的安全性的公司。传统的安全防护方式存在误报率高、人工成本高、耗时长等问题,而ShiftLeft提供的持续性安全防护解决方案能够解决这些问题。通过将下一代静态代码分析与应用开发自动化工作流中涉及的安全工具相结合,ShiftLeft帮助企业实现DevSecOps的安全部分,提供高效、准确的安全能力。 ... [详细]
  • 花瓣|目标值_Compose 动画边学边做夏日彩虹
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Compose动画边学边做-夏日彩虹相关的知识,希望对你有一定的参考价值。引言Comp ... [详细]
  • 来吹下汽车
    最近帮同事的一个朋友选车,最后他决定了一汽大众的迈腾,也就是海外版(欧洲为主)的帕萨特B8,国内如果加长过的话,应该叫B8L吧。基于大众最新的通用MQB平台(模块化横置发动机平台) ... [详细]
author-avatar
mobiledu2502881283
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有