认识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的概念

最新文章

  1. Js对map的操作
  2. maven学习(5)-maven中常见错误
  3. Ubuntu/Windows双系统修复引导
  4. 2.Spring Web MVC的优势
  5. 小白日记45:kali渗透测试之Web渗透-SqlMap自动注入(三)-sqlmap参数详解-Optimization,Injection,Detection,Techniques,Fingerprint
  6. spring源码分析之spring-messaging模块详解
  7. PHP curl 模拟登陆
  8. 选择Blobs (Evision)
  9. Centos7 tmux1.6 安装
  10. hibernate 动态多数据库
  11. Fiddler和app抓包
  12. A Boring Problem UVALive - 7676 (二项式定理+前缀和)
  13. inotify事件监控工具
  14. easyui-tree-url-param
  15. MySql快速插入以及批量更新
  16. C# 自定义承载控件
  17. Linear Regression with PyTorch
  18. 第二十六课 典型问题分析(Bugfix)
  19. [转帖]linux namespace 和cgroup lxc
  20. InfoQ 趋势报告:架构和设计领域技术演变详解

热门文章

  1. 页面强制重新加载js的办法
  2. Ability之间或者进程间数据传递之对象(Sequenceable序列化)
  3. JavaScript async/await:优点、陷阱及如何使用
  4. 使用docker-compose配置mysql数据库并且初始化用户
  5. 关于Java中for,while,if,方法的练习
  6. 基于CefSharp开发浏览器(八)浏览器收藏夹栏
  7. Jacobi与SOR迭代法的实现与性能比较及均匀间距与Chebyshev插值的实现、性能分析及二者生成的插值误差比较
  8. Vue 解决img标签不显示图片问题
  9. PAT-1066(Root of AVL Tree)Java语言实现
  10. MVC模式从Controller返回内容协商格式(Json或者Xml)