认识Jenkins

持续集成

持续集成 Continuous integration (CI):

1:概念作用

每个小组分别负责各个模块的开发,模块独立测试虽然可以通过,上线之前把所有模块整合到一起测试会发现很多问题,解决的方法无非就是把代码返工修改,但是可能还会存在问题

那么,经常的把所有模块集成在一起测试,有问题可以尽早的发现,这就是持续集成。目的是为了尽早发现项目整体运行的问题,尽早解决

2:Jenkins持续集成

Jenkins可以集成git、maven、sonar、部署插件等,类似maven的生命周期,集成各种插件



持续集成的优点:

1:易于定位错误

2:易于控制开发流程

3:易于CodeReview

4:易于减少不必要的工作

持续交付

持续交付 Continuous delivery (CD):

1:概念作用

互联网项目的版本升级时间太长,对用户的反馈修改不及时,无法改善用户体验,会使得用户流失严重

用小版本快速迭代,不断的收集用户的反馈信息,最快的改进优化,新版本能够尽快交付给用户

2:特点

功能迭代迅速,持续发布,不需要等待一个大版本再交付给用户

持续部署 Continuous deployment (CD):

1:概念作用

通过自动化部署的手段,将软件功能频繁的进行交付

加快代码提交到功能上线的速度,保证新的功能能够在第一时间部署到生产环境并被使用

Jenkins简介



Jenkins是一款开源 CI&CD 软件,用于自动化各种任务,包括构建、测试和部署软件

Jenkins具有非常优秀和显著的特性:

1:持续集成和持续交付

2:简易安装

3:配置简单

4:插件

5:扩展

6:分布式

Jenkins的官方网站,支持中文:Jenkins官网

Jenkins用户手册,帮助我们使用和学习Jenkins:Jenkins用户手册

为什么需要Jenkins



上图中可以看到,从开发到交付的整个流程,很多重复的动作都需要手工进行



上图中所示,使用了Jenkins,Jenkins将流程自动化串联操作

Jenkins的目标

1:降低风险

一天中进行多次的集成,并且做了相应的测试,这样有利于检查缺陷

2:减少重复过程

编译、测试、打包、部署等等固定的一些操作都是必须要做的,无法省略任何一个环节

而使用Jenkins等持续集成工具,可以把构建环节从手动完成转换为自动化完成

3:随时生成可以部署的软件

持续集成可以在随时发布可以部署的软件,利用持续集成,可以经常对源代码进行一些小的改动,并且将这些代码和其他的代码进行集成,出现问题,项目团队立马就可以知道,问题会第一时间被修复

如果不采用持续集成,那么,可能到交付之前的集成测试的时候才发现问题,导致延迟发布产品

Jenkins安装

需要五个步骤:

1:安装JDK

2:下载Jenkins war包或者直接安装Jenkins

3:运行命令:java –jar Jenkins.war –httpPort=8080

4:打开浏览器进入链接:localhost:8080

5:按照说明完成验证

具体的操作步骤,可以在官网的用户手册查看:安装Jenkins

初次使用Jenkins

1:运行java –jar Jenkins.war –httpPort=8080,会进入如下页面,等待Jenkins准备工作完成



2:解锁Jenkins

到指定的文件中复制初始密码,然后继续



3:附加初始插件

如果网络不好,不建议初始化插件中安装大量插件,’选择插件来安装’选择0个跳过,通过后面的插件管理来操作



4:创建管理员用户



5:全局安全配置



6:插件管理

加速插件安装

加速插件安装方法 :

1:Jenkins管理-插件管理设置-升级站点,输入国内插件安装源地址

2.:在update-center.json文件,通过IDM进行多线程加速下载插 件hpi文件,进行离线安装

多线程下载工具:IDM.6.35.11.Retail.CHS.exe 国内插件源地址:https://jenkins-zh.gitee.io/update-center-mirror/tsinghua/update-center.json

Jenkins-CI

Jenkins的核心特性:Pipeline

Jenkins的Pipeline是一套插件,将持续交付的实现和实施集成到Jenkins中,将基于版本控制管理的软件持续的交付到您的用户和消费者手中

将开发交付流程的每个操作都集成到Pipeline中,通过Pipeline就可以执行到流程中的每一个操作动作

可以通过Jenkins UI界面非常轻松的完成CI操作:

Jenkins java项目集成全局配置

1:进入全局配置页面



2:配置JDK



3:集成Maven





4:集成Git

使用Jenkins构建Java项目

1:点击新建Item,进入新建任务页面



2:配置项目名称

这里我们选择第一个配置



输入项目的描述信息



3:配置源码路径及分支



4:配置Maven插件

在构建下选择如下内容





4:开始构建

点击Build Now立即构建项目



在下面可以看到我们的构建历史



点击一个构建历史进入后看到如下图所示,点击控制台输出可以看到构建日志

Jenkins上的工作空间

点击工作区可以看到我们构建的代码



右侧workspace查看是否有源码和编译的war包

Jenkins-CD

准备web容器

设置tomcat的管理账号:

配置tomcat/config下tomcat-users.xml文件



加入如下配置信息:

<role rolename="manager"/>
<role rolename="manager-gui"/>
<role rolename="admin"/>
<role rolename="admin-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="tomcatAdmin" password=“123456" roles="admin-gui,admin,manager-gui,manager,manager- script,manager-jmx,manager-status"/>

进入tomcat管理页面,能进入表示配置成功:

集成部署插件

1:下载Deploy to container Plugin插件

2:选中部署的项目,点击左侧的configure配置,配置Post-build Actions构建后的操作

a 拉框中选中Deploy war/ear to a container

b 配置部署信息

1:选择war包位置,相对于workspace的位置

2:填写项目访问名称

3:填写tomcat的账号密码,然后选择配置好的账号密码

4:填写tomcat的发布地址

自动部署

操作步骤:

1:Jenkins中选择一个项目进行构建



2:tomcat中查看webapp目录

3:确认项目已经被加载了

4:浏览器中输入项目的访问地址,进行访问

Jenkins配置GitLab钩子程序

Jenkins中操作

  1. 选中需要配置的项目
  2. 点击configure配置
  3. 选中Build Triggers构建后触发

GitLab中操作

5. 填写密钥

6. gitlab或者github中配置HOOKS: http://192.168.1.149:8080/jenkins/job/controller/build?token=jenkins



检测Jenkins钩子程序是否有效

在浏览器中输入: http://192.168.1.149:8080/jenkins/job/controller/build?token=jenkins

在平时开发的过程中,修改了代码,使用git push到远程Git仓库

或者在IDE中执行push操作

观察Jekins的响应动作:当有请求过来时,会立即构建项目

Jenkins执行shell启动java程序



#!/bin/bash
cd /usr/jarSh
echo "Execute shell Start"
sh stop.sh
sh replace.sh
echo "Execute shell Finish"
chmod 777 /usr/jarSh/startup.sh
BUILD_ID=dontKillMe nohup /usr/jarSh/startup.sh &

完成后构建项目,查看执行的历史,是否出现shell的打印语句和我们jar包main函数打印的语句

Jenkins完成CI/CD

DevOps

DevOps,基于development以及operation两个词的混合,其目的在于缩短系统开发的生命周期,在这过程中发布特性、修复bug以及更新均被紧密的结合

DevOps与持续交付的概念有些类似,DevOps促使开发与运维之间相互协作的文化,偏向于一种对于文化氛围的构建

传统团队组织:

1:开发与运维之间是割裂开的

2:流程被分割,由不同的人员执行

3:高昂的沟通成本,重复的劳动



互联网团队组织:

1:不同技能的人在一个团队中,为共同的软件开发目标而工作

2:优化整个流程的循环

总结

看完本文希望您能够了解:

1:持续集成和持续交付

2:Jenkins的目标是什么以及能够做的事情

3:使用JenKins完成构建、持续集成、持续部署

4:DevOps的概念

DevOps之Jenkins相关知识的更多相关文章

  1. 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸

    类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...

  2. 移动WEB像素相关知识

    了解移动web像素的知识,主要是为了切图时心中有数.本文主要围绕一个问题:怎样根据设备厂商提供的屏幕尺寸和物理像素得到我们切图需要的逻辑像素?围绕这个问题以iphone5为例讲解涉及到的web像素相关 ...

  3. listener监听器的相关知识

    从别人的博客上我学习了listener的相关知识现在分享给大家 1.概念: 监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上 ...

  4. UIViewController相关知识

    title: UIViewController 相关知识date: 2015-12-13 11:50categories: IOS tags: UIViewController 小小程序猿我的博客:h ...

  5. 【转】java NIO 相关知识

    原文地址:http://www.iteye.com/magazines/132-Java-NIO Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的 ...

  6. NSString使用stringWithFormat拼接的相关知识

    NSString使用stringWithFormat拼接的相关知识 保留2位小数点 1 2 3 4 //.2代表小数点后面保留2位(2代表保留的数量) NSString *string = [NSSt ...

  7. iOS网络相关知识总结

    iOS网络相关知识总结 1.关于请求NSURLRequest? 我们经常讲的GET/POST/PUT等请求是指我们要向服务器发出的NSMutableURLRequest的类型; 我们可以设置Reque ...

  8. 电路相关知识--读<<继电器是如何成为CPU的>>

    电路相关知识–读<<继电器是如何成为CPU的>> */--> *///--> *///--> 电路相关知识–读<<继电器是如何成为CPU的> ...

  9. 地址标记,SpringMVC转发与调用相关知识存档

    1.mytest_mavenprj1中,index的 <a href="login/login.html">点击登录</a> 与 <a href=&q ...

随机推荐

  1. 解决QQ能正常上网但是网页无法打开的办法

    最近网页老师稀里糊涂的打不开,在这里附上参考的行之有效的办法. https://baijiahao.baidu.com/s?id=1645363213803553998&wfr=spider& ...

  2. 看完我的笔记不懂也会懂----ECMAscript 567

    目录 ECMAscript 567 严格模式 字符串扩展 数值的扩展 Object对象方法扩展 数组的扩展 数组方法的扩展 bind.call.apply用法详解 let const 变量的解构赋值 ...

  3. 【读书笔记】Linux命令行与Shell脚本编程大全

    Linux命令行与Shell脚本编程大全 5.2 shell 的父子关系 命令分组 Command Grouping 主要有两种形式: 一种以小括号包括,命令之间以冒号分隔.也被称为 进程列表: 注意 ...

  4. ArrayList源码分析笔记

    ArrayList源码分析笔记 先贴出ArrayList一些属性 public class ArrayList<E> extends AbstractList<E> imple ...

  5. 翻译:《实用的Python编程》04_01_Class

    目录 | 上一节 (3.6 设计讨论) | 下一节 (4.2 继承) 4.1 类 本节介绍 class 语句以及创建新对象的方式. 面向对象编程(OOP) 面向对象编程是一种将代码组织成对象集合的编程 ...

  6. 从一个想法看 FreeBSD 是商业化还是学院派

    在某知名计算机网络论坛上我看到一个帖子,说自己想根据 FreeBSD 做一个移动的终端操作系统,就像安卓,苹果的 IOS 一样的. 逆向思维当初开发安卓的时候不可能没有考虑过 FreeBSD,因为无论 ...

  7. python 集合详解

    字符串 一个个字符组成的有序的序列,时字符的集合 使用单引,双引,三引 引住的字符序列 字符时不可变的对象 bytes定义 bytes不可变字节序列 使用b前缀定义 只允许基本ASCII使用字符形式 ...

  8. 前端性能监控之performance

    如果我们想要对一个网页进行性能监控,那么使用window.performance是一个比较好的选择. 我们通过window.performance可以获取到用户访问一个页面的每个阶段的精确时间,从而对 ...

  9. css实现京东顶部导航条

    1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...

  10. 利用flex解决input定位的问题

    用简单的布局搞定input框使用fixed下输入的问题 最近在做移动端H5聊天应用发现,当input框在最底部并且使用 position:fixed 属性的时候在苹果手机中会出现不兼容的情况 ​