DevOps之Jenkins相关知识
认识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中操作
- 选中需要配置的项目
- 点击configure配置
- 选中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相关知识的更多相关文章
- 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸
类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...
- 移动WEB像素相关知识
了解移动web像素的知识,主要是为了切图时心中有数.本文主要围绕一个问题:怎样根据设备厂商提供的屏幕尺寸和物理像素得到我们切图需要的逻辑像素?围绕这个问题以iphone5为例讲解涉及到的web像素相关 ...
- listener监听器的相关知识
从别人的博客上我学习了listener的相关知识现在分享给大家 1.概念: 监听器就是一个实现特定接口的普通java程序,这个程序专门用于监听另一个java对象的方法调用或属性改变,当被监听对象发生上 ...
- UIViewController相关知识
title: UIViewController 相关知识date: 2015-12-13 11:50categories: IOS tags: UIViewController 小小程序猿我的博客:h ...
- 【转】java NIO 相关知识
原文地址:http://www.iteye.com/magazines/132-Java-NIO Java NIO(New IO)是从Java 1.4版本开始引入的一个新的IO API,可以替代标准的 ...
- NSString使用stringWithFormat拼接的相关知识
NSString使用stringWithFormat拼接的相关知识 保留2位小数点 1 2 3 4 //.2代表小数点后面保留2位(2代表保留的数量) NSString *string = [NSSt ...
- iOS网络相关知识总结
iOS网络相关知识总结 1.关于请求NSURLRequest? 我们经常讲的GET/POST/PUT等请求是指我们要向服务器发出的NSMutableURLRequest的类型; 我们可以设置Reque ...
- 电路相关知识--读<<继电器是如何成为CPU的>>
电路相关知识–读<<继电器是如何成为CPU的>> */--> *///--> *///--> 电路相关知识–读<<继电器是如何成为CPU的> ...
- 地址标记,SpringMVC转发与调用相关知识存档
1.mytest_mavenprj1中,index的 <a href="login/login.html">点击登录</a> 与 <a href=&q ...
随机推荐
- Differences between Stack and Heap
本文转载自Differences between Stack and Heap Stack vs Heap So far we have seen how to declare basic type ...
- 从微信小程序到鸿蒙js开发【12】——storage缓存&自动登录
鸿蒙入门指南,小白速来!从萌新到高手,怎样快速掌握鸿蒙开发?[课程入口] 正文: 在应用开发时,我们常需要将一些数据缓存到本地,以提升用户体验.比如在一个电商的app中,如果希望用户登录成功后,下次打 ...
- 【转载】Win10彻底格式化磁盘防止数据恢复的技巧
转载地址 注意 要尽量删除数据,请在运行cipher /w时关闭其他所有应用程序. 1.如果你在格式化磁盘后想要防止数据被恢复, Format 命令,而现在只需在其后添加 /P 参数,即可用随机数据覆 ...
- SpringMVC异步处理的 5 种方式
作者:丁仪 来源:https://chengxuzhixin.com/blog/post/SpringMVC-yi-bu-chu-li-de-5-zhong-fang-shi.html 前段时间研究了 ...
- 基于Hi3559AV100 RFCN实现细节解析-(1)VGS初介绍
下面随笔系列将对Hi3559AV100 RFCN实现细节进行解析,因为RFCN用到了VGS加框,因此本篇随笔将给出VGS视频图像子系统的具体说明,便于后面RFCN的细节实现说明. VGS 是视频图形子 ...
- HDOJ-3416(最大流+最短路+ISAP算法+向前星dijikstra算法+如何判断一条边是否在最短路中)
Marriage Match IV HDOJ-3416 这题的题意就是要找两点之间最短路的路径个数,而且边不能重复. 最大流和最短路的结合.首先正向和反向建图,再跑两遍dijikstra.到这里就求出 ...
- [个人总结]pytorch中用checkpoint设置恢复,在恢复后的acc上升
原因是因为checkpoint设置好的确是保存了相关字段.但是其中设置的train_dataset却已经走过了epoch轮,当你再继续训练时候,train_dataset是从第一个load_data开 ...
- Java 面向对象 01
面向对象·一级 面向对象思想概述 * A:面向过程思想概述 * 第一步 * 第二步 * B:面向对象思想概述 * 找对象(第一步,第二步) * C:举例 * 买煎饼果子 ...
- CSS基础 和 font字体、背景属性连写 与 清除浮动方法
1.伪类 1. :link 2. :visited 3. :hover(重要) 4. :active 5. :focus(input标签获取光标焦点) 2.伪元素 1.:first-letter 2. ...
- 新石器时代码农的Typescript开发总结
如果评定前端在最近五年的重大突破,Typescript肯定能名列其中,重大到各大技术论坛.大厂面试都认为Typescript应当是前端的一项必会技能.作为一名消息闭塞到被同事调侃成"新石器时 ...