快速掌握jenkins核心功能
课程概要:
- jenkins 概述和环境配置
- 基于jenkins实现可持续化集成
- jenkins pipeline 核心应用
一、jenkins概述与环境配置
知识点:
- 关于可持续化集成
- jenkisn概述
- 下载安装jenkins
- 基础环境配置与常用插件下载
1、关于可持续化集成
什么是可持续化集成?举一个例子
一个开发团队正着手开发一个项目,在需求评审之后由小组长拆成肉感个模块,分给不同的小伙伴去实现。2个星期后各自的模块功能都实现了,大家都很开心。这时是该合在一起提测了把,一提测小组长就傻眼了,写的功能没有一个可以用的,要么公共类冲突,要么配置冲突等,经过上一次教训,小组长变聪明了,在也不等功能开发之后再合并提测了,而是每天集成提测,如果发现冲突当天就要解决,这样子我们一天起码要抽出20%的时间去合并代码解决冲突,可持续化集成就是用来解决这个问题。
可持续集成即 Continuous integration(CI)是一种软件开发实战,即团队开发成员经常集成他们的工作,每次集成都通过自动化构建(包括编译,发布,自动化测试)来验证,从而尽快的发现集成错误,让团队能够更高效的开发软件
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q8VVyZpt-1574607919619)(E:\架构师\git与svn原理截图\image-20191123140557969.png)]
当我们提交代码到git后 CI就会自动 合并 编译 测试这样我们就用人工去检查 合并代码,大大提高了开发效率
持续集成要点:
- 统一代码库(git)
- 统一依赖包管理(nexus)
- 测试自动化
- 构建全自动化(maven)
- 部署自动化
- 可追踪集成记录
2、jenkins概述
jenkins就是为了满足上述持续集成的要点而设计的一款工具,其主体框架采用java开发,实质内部功能都是由各种插件实现的,由于功能都是插件实现所以极大的提高了系统的扩展性(我们之前学的maven的每一个阶段也是用插件实现的)。其不仅可以满足java系统的集成,也可以实现php等语言的集成发布。通过pipeline插件,用户可以随自己需要定制集成流程。
3、下载安装jenkins
下载:jenkins支持Docker、yum、msi等安装,在这里推荐大家直接选择下载他对应的WAR包进行安装。 https://jenkins.io/zh/download/
启动:下载完成之后直接可以通过jar -jar 命令启动
java -jar jenkins.war --httpPort=8080
也可以将其放到servlet容器(tomact\jetty\jboss)中直接启动,无需过多配置,一切插件化这是jenkins比较优秀的设计。
配置:下载完成之后进入启动页(http://127.0.0.1:8080/) 会有一个 验证过程,验证码存储在 ${user_home}.jenkins\secrets\initialAdminPassword 中,接着就是进入安装插件页,选择默认即可,这个过程稍长。
4、基础环境变量与常用插件下载
在集成的时候,jenkins 用到了 Maven 、Git 所以服务器中必须提前安装好这些环境,具体参照前面的git与maven 课程。
插件下载
更换源 ->系统管理->管理插件->高级 ->升级站点
把:http://updates.jenkins-ci.org/update-center.json
换成:http://mirror.esuni.jp/jenkins/updates/update-center.json
镜像源查询:http://mirrors.jenkins-ci.org/status.html
基本插件列表
插件名称 | 插件描述 |
---|---|
Maven Integration | maven 管理插件 |
Deploy to container | 容器部署插件 |
Pipeline | 管道集成插件 |
Email Extension | 邮件通知插件 |
SSH | 用于ssh 通信 |
二、基于jenkins实现可持续化集成
知识点:
- 持续化集成完成的目标
- 持续化集成配置
- 集成实现原理
1、持续化集成完成目标
需要达到的目标如下:
-
自动基于分支构建项目
-
构建好的项目自动部署至Tomcat容器
-
构建好的项目自动上传至Nexus 私服存档
-
保存构建历史记录,并可以下载历史记录
2、持续化集成配置
- 新建 mvaen 项目
- 配置checkout 地址和用户
- 编写maven 构建命令(强制更新)
- 自动部署至Tomcat配置
自动部署的前提条件:
-
需要下载 Deploy to container 插件
-
设置Tomcat manager 用户和密码,以下配置加入至 Tomcat conf/tomcat-users.xml 中
-
tomcat webapp 中必须保留 manager 项目
<role rolename="admin-gui"/> <role rolename="manager-gui"/> <role rolename="manager-script"/> <user username="manager" password="manager" roles="manager-gui,manager-script"/> <user username="admin" password="admin" roles="admin-gui,manager-gui"/> <user username="JolyouLu" password="123" roles="admin-gui,manager-gui"/>
-
存档配置
构建后操作添加 Deploy war/ear to a container 项目
配置setting.xml 用于获取上传至nexus 的权限
添加一个 server id 与 存档配置当中的repository id 相对应。
<server>
<id>nexusReleases</id>
<username>deployment</username>
<password>deployment123</password>
</server>
3、集成原理
三、jenkins pipeling 核心应用
知识点:
-
pipeline 概要
-
pipeline 基础语法
-
pipeline Demo演示
1、pipeline 概要
前面我们演示的 使用maven 来进行自动化构建,其流程分别是:构建环境准备==》源码下载 ==》构建 ==》存档 ==》部署。这是一种固化的构建流程,如果你们的需求是多个项目需要进行依赖构建这种复杂的构建场景 时该怎么办?jenkins pipeline 可以做到这一点。
Jenkins从根本上讲是一种支持多种自动化模式的自动化引擎。Pipeline在Jenkins上添加了一套强大的自动化工具,支持从简单的连续集成到全面的连续输送Pipeline的用例。用户可以基于他实现更为复杂的建模场景。
2、pipeling 基础语法
#以下就是一个非常简单的 pipeline 脚本:
pipeline {
agent any
stages {
stage('Build') {
steps {
sh 'make'
}
}
stage('Test'){
steps {
sh 'make check'
junit 'reports/**/*.xml'
}
}
stage('Deploy') {
steps {
sh 'make publish'
}
}
}
}
agent 表示Jenkins应该为Pipeline的这一部分分配一个执行者和工作区。
stage 描述了这条Pipeline的一个阶段。
steps 描述了要在其中运行的步骤 stage
sh 执行给定的shell命令
junit 是由JUnit插件提供的 用于聚合测试报告的Pipeline步骤。
3、pipeline Demo 演示
前提条件
-
Jenkins 2.x或更高版本
-
Pipeline插件
可以通过以下任一方式创建基本Pipeline:
-
直接在Jenkins网页界面中输入脚本。
-
通过创建一个Jenkinsfile可以检入项目的源代码管理库。
用任一方法定义Pipeline的语法是一样的,从项目源码中检入jenkinsfile 文件会更方便一些。
#基于脚本构建 pipeline
pipeline {
agent any
stages {
stage('Checkout') {
steps {
echo 'Checkout'
stage('Build') {
steps {
echo 'Building'
}
}
stage('test'){
steps{
echo 'test'
}
}
}
}
echo 'Checkout'
stage('Build') {
steps {
echo 'Building'
}
}
stage('test'){
steps{
echo 'test'
}
}
}
}