产品发布流程,以jenkins+git/svn自动部署为例

前言

产品发布流程:产品设计成型 -> 开发人员开发代码 -> 测试人员测试功能 -> 运维人员发布上线

在日常的开发过程中,发布版本的流程一般都是手动部署,我们需要把代码提交到版本控制器SVN/git上,然后再把SVN上每个人提交的最新模块的代码拉下来,然后编译打包,最后手动上传到Tomcat上。这种方式很繁琐,也会浪费时间,如果有测试环境和生产环境,则效率更低。具体如下图所示:
产品发布流程,以jenkins+git/svn自动部署为例_第1张图片

原理

一个产品线有四个环境,开发环境,测试环境,预上线环境,生产环境。除了生产环境之外都是通过jenkins来部署代码。

Jenkins的思想就是自动化部署:“自动化”的具体体现在:当我们向版本库(SVN)提交新的代码后,Jenkins就会自动从我们的SVN上拉去新的war包,然后重新部署到应用服务器(Tomcat),用户或测试人员看到的就是最新的应用程序。
Jenkins的原理图,如下所示:
产品发布流程,以jenkins+git/svn自动部署为例_第2张图片
搭建上述持续集成环境可以把整个构建、部署过程自动化,很大程度上减轻工作量。对于我们程序员的日常开发来说不会造成任何额外负担,自己把代码提交上去之后,服务器上运行的马上就是最新版本。

基本过程:

  1. 创建自己的项目 进入jenkins点击新建 -> 输入任务名称 -> (建议)点击构建一个多配置项目 -> 确定
  2. 点击刚创建的项目,进入设置中将各个配置配置好
  3. git提交代码之后点击立即构建即可

两个方案 1 Jenkins + git+ github/gitlab 2 jenkins + svn+ svn admin

先将本地代码提交至git,再提交github,通过jenkins和github进行配置,jenkins有触发器配置,每次有新代码提交,git上代码会自动上传到服务器并自动更新发布。
产品发布流程,以jenkins+git/svn自动部署为例_第3张图片
git与github/gitlab区别
git是弓,你的代码是箭,github是靶子
GitHub和GitLab都是基于web的版本控制界面,服务于互联网,Github可以直接注册使用,Gitlab需要部署到服务器。
GitLab创建的项目的默认属性是Private(私人的),当然,你也可以选择Public(公开的)或Internal(内部的)。
Git详解及 github与gitlab使用
**

『主角登场』

**
产品发布流程,以jenkins+git/svn自动部署为例_第4张图片
概念:Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,作为一个开放易用的软件平台,旨在提供软件开发的持续集成服务。
它运行在Servlet容器中(例如Apache Tomcat)。它兼容ant、maven、gradle等多种第三方构建工具,支持软件配置管理(SCM)工具(包括AccuRev SCM、CVS、Subversion、Git、Perforce、Clearcase和RTC),也支持直接与知名源代码托管网站,如github、bitbucket直接集成,可以执行基于Apache Ant和Apache Maven的项目,以及任意的Shell脚本和Windows批处理命令。
通过自动化的持续集成可以将这些重复的动作,包括代码编译、数据库集成、测试、审查、部署及反馈,都变成自动化的编译、打包、分发部署应用。
Jenkins。Jenkins的主要开发者是川口耕介。Jenkins是在MIT许可证下发布的自由软件。

原理: jenkins的工作原理是源代码从github中拷贝一份到本地,然后根据设置的脚本进行build。整个系统的关键就是build脚本,用来告诉jenkins在一次集成中需要执行的任务。

功能:
两大点: 1、持续的软件版本发布/测试项目。2、监控外部调用执行的工作。
细分为5小点:1. 定时拉取代码并编译 2. 静态代码分析 3. 定时打包发布测试版 4. 自定义操作,如跑单元测试等 5. 出错提醒

“三个持续”的区别:
持续集成 (Continuous integration,简称CI)
持续交付(Continuous delivery)
持续部署(continuous deployment)

持续集成(英语:Continuous integration,缩写为 CI),一种软件工程流程,将所有工程师对于软件的工作复本,每天集成数次到共用主线(mainline)上。
持续集成主要是强调开发人员提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。简单来讲就是:频繁地(一天多次)将代码集成到主干。
产品发布流程,以jenkins+git/svn自动部署为例_第5张图片

持续交付(英语:Continuous delivery,缩写为 CD),是一种软件工程手法,让软件产品的产出过程在一个短周期内完成,以保证软件可以稳定、持续的保持在随时可以释出的状况。
持续交付在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境的「类生产环境」(production-like environments)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的 Staging 环境中更多的测试。如果代码没有问题,可以继续手动部署到生产环境中。
产品发布流程,以jenkins+git/svn自动部署为例_第6张图片

持续部署(英语:Continuous Deployment,缩写为 CD),是持续交付的下一步,指的是代码通过评审以后,自动部署到生产环境。
持续部署即在持续交付的基础上,把部署到生产环境的过程自动化。
产品发布流程,以jenkins+git/svn自动部署为例_第7张图片
详细搭建过程可参考:jenkins+git+github搭建及代码持续集成,自动部署上线
扩展:
1 jenkins与zabbix的区别
Zabbix 3.4软件使用手册

2 思考jenkins 与ZenTao 区别
Linux下部署开源版“禅道”项目管理系统*

你可能感兴趣的:(Linux)