zoukankan      html  css  js  c++  java
  • Jenkins自动化部署-----持续交付

    前言:

    感谢之前带领过我的leader,让我能够知道什么是好的开发方法。

    在很早之前就接触过敏捷开发。什么是敏捷开发,简单来说就是让软件可靠地,快速地发布出来的一种开发方法和技巧。

    而敏捷开发中有许多的实践,可能并不是每一种实践都适合于你的团队,但是总有一种能帮助你们的团队快速地将软件可靠地,高可用地发布出来。

    如果在读这篇文章之前,还没有接触过敏捷开发,那么推荐一门敏捷开发入门的书籍:《硝烟中的scrum和xp》,这本书是一本敏捷开发的入门入籍,介绍了诸如:产品如何编写backlog、怎么准备sprint计划、如何做回顾、如何做测试、如何管理scrum团队等基础的一些敏捷知识。这本书帮助了很多人了解了敏捷开发,是一本很经典的敏捷入门引导书。

    至于关于持续交付的入门入籍,附上链接,欢迎下载持续交付-发布可靠软件的系统方法

    chapter 1: 为什么要使用持续交付
    在我们的开发部署工作中,有一些典型的反人类发布软件模式:

    1.手工部署软件

    无论是自己编写的系统,还是系统所需的一些软件:mysql、redis、git等,统统都是用手动部署的方式,每次需要发布、更新,都要连接到服务器上,手动地部署其新版本(例如:先将本地的war包上传到服务器的tomcat中,然后服务器上kill -9 xxx,重新启动tomcat这样),23333。。且不说这样部署的人力成本很大,不知道部署的软件是否有bug。并且还有一定的出错机率,在互联网竞争如此激烈的今天,这样的部署,肯定是不行的。

    试想,如果有一种方法,当你本地Push代码之后,只需要在网页上点击一个按钮,或者点击按钮这一步都省略掉,再倒上一杯咖啡,你的系统已经部署到线上环境了,这样的自动化,不是更人性化吗

    2.开发完成后才向类生产环境部署

    很多团队表示,我们一定要把系统全部coding完成,才向(类)生产环境部署系统,这样有一个好处,就是大家更加专注于coding。不被打扰。但是也有一个坏处,就是无法及时反馈出系统中的问题,你的boss也无法知道系统究竟开发到什么程度,boss也无法向客户/他的boss展示项目的进程。

    及时反馈在软件开发中是非常重要的,反馈得及时,能帮助软件能快速发现并解决掉软件中很多典型的问题:

    (1)开发出的功能和boss想要的功能不一样

    (2)软件开发中没被发现的bug

    (3)页面实现和UI设计不一致等等。。。

    那么有的人就会说,每部署一次都非常麻烦,需要打包、上传、部署配置、部署系统,而且容易出错。一旦部署失败,还要去看日志,找到bug并且修复后,重复以上的全部操作。

    今天我们要讲解的jenkins就是解决这个问题的,只需要点击一个按钮就可以部署git上的代码,是不是特别方便。

    3.生产环境纯手工配置管理

    将配置文件、变量都通过手工的方式去部署是非常不科学的,这不仅需要一个部署专家,若是哪天这个专家请假或者离职,那么你们的团队便无法部署了。而且手工部署还极其容易出错,多台服务器,需要多次重复部署。

    自动化是必然的趋势,那么典型的解决方案就是使用某个配置管理软件,或者将配置放在某个具体的脚本中,这样会使软件发布轻松很多

    chapter 2: jenkins介绍
    jenkins是一个开源软件项目,基于java开发的一款持续集成(Continuous Integration)工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

    一切的目的都是快速反馈。

    喏,下面就是这货的图标

    jenkins的标语:

    “Build great things at any scale”

      “以任何规模建造伟大的事情”


     Jenkins,之前叫做Hudson,所以如果你在jenkins的很多地方,看到hudson这个单词,一定要知道他是jenkins的旧名字。

     Jenkins是基于Java开发的一种持续集成工具,用于监控秩序重复的工作,包括:

            1)、持续的软件版本发布/测试项目。

            2)、监控外部调用执行的工作。

            下面是一个官网的简单图形介绍:

            

    chapter 3: jenkins安装和配置
    上面介绍了那么多,估计你也没看,我们关心的只有软件的使用方法(23333)。那么我们下面就进入jenkins的安装和配置

    环境准备:

    首先,你的机器上面,需要安装jdk、git、maven相关的运行环境,我这里使用的jdk1.8、maven3.3.9、git2.16.2

    jenkins安装:

    下载地址https://jenkins.io/download/,仅下载war包。这个下载就不需要截图了吧。

    得到war包后,有两种运行jenkins的方式

    1.将war包放在tomcat的webapps目录下,启动tomcat

    2.命令启动 java -jar 下载的war包名.war --httpPort=9004

    第二种方式启动后,会在/home/xxxxx/.jenkins文件夹下构建jenkins的目录。

    你想知道第一种在哪构建这个目录?我也不知道,自己试试咯,启动后日志中有显示位置

     用浏览器访问http://localhost:9004 (tomcat启动,访问http://lcoalhost:9004/jenkins),得到以下页面

     

    然后输入密码就可以了。。

    密码,你不知道什么密码?图片中红色的部分不是已经说了密码在哪里了吗。打开文件,copy,paste就行了。

    接下来就到了插件配置页面,建议翻墙进行安装所需要的插件,或者现在直接选择skip plugin installations跳过

     

    设置成功之后,就跳转到用户名密码配置页面,这个用户名和密码用于以后的jenkins登录

     

    这是你之后用来登录的用户名密码,最好记住哦~ 

    当当当当~~到这里,你的Jenkins已经配置成功了,成功进入jenkins的主页了!恭喜恭喜

     

    那么接下来,我们就要开始搭建自动化部署的pipeline了。

    什么,你说什么是Pipeline?好吧,简单讲解一下

     

    喏,就是上面这货,三个模块,第一个模块是构建模块,用来执行单元测试+build项目形成二进制文件,由于我使用的是Springboot,所以得到的是一个jar包。第二个模块是部署模块,当第一个模块构建成功(变绿),才会触发第二个模块,如果第一个模块单元测试或者运行失败,当前模块就会变红,那么就不会运行第二个模块,当然,这个触发是自己配置的。第三个模块,就是线上环境了,第二个模块运行成功后,就开始运行第三个模块。

    当你push了代码之后,只需要点击上面的Run那个按钮,你的系统就已经部署到线上了,是不是很神奇。

    你想要搭建这个玩意,首先,你需要给Jenkins安装几个插件,点击这里安装插件

    进去了之后,根据下图进行安装插件哦

     

  • 相关阅读:
    linux系统编程程序员必备
    postgresql查询优化之GIN(Generalized Inverted Index)索引与全文检索
    postgresql并行执行
    lightdb for postgresql日志详解
    PostgreSQL 使用数组类型
    postgresql wal文件误删恢复
    汉语词性标注集
    postgresql----JSON类型、函数及全文检索的支持
    postgresql等待事件之wait_event为空解析
    lightdb for pg查看锁
  • 原文地址:https://www.cnblogs.com/east7/p/10311789.html
Copyright © 2011-2022 走看看