Jenkins 实现 CI 、CD


什么是CI:Continuous Integration,也就是持续集成
什么是CD:Continuous Delivery 和 Continuous Deployment,也就是持续交付、持续部署
持续集成:就是开发提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,测试过程可以确定新代码和原有代码能否正确地集成在一起,如果测试过程有问题,那么将返回代码给开发部门
持续交付:在持续集成的基础上,将集成后的代码部署到更贴近于真实的生产环境中。在贴近真实的生成环境中,可以提高数据支撑,且进一步做测试,如果进一步测试没有问题,那么可以部署到线上的生成环境中
持续部署:是在持续交付的基础上,把部署到生产环境的过程自动化,实现部署无需人工参与,如何在部署的过程中出现问题,将立即回滚代码

(一) Jenkins持续集成简介

目前主流网站部署方法,通过可以通过Jenkins平台实现全自动部署+测试,Jenkins是一个可扩展的持续集成引擎,是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

Alt text

有了Jenkins之后,开发人员写好代码,不需要自己进行源码编译、打包等工作,直接将代码分支存放在SVN、GIT仓库即可,运维人员只需要在Jenkins平台将代码构建,部署,和测试。减少人工干预的错误率,同时解放运维人员繁杂的上传代码、手动备份、更新。在Jenkins平台上,运维人员可以实现自动构建过程,包括自动编译、分发、部署和测试

(二) Jenkins 平台安装

由于Jenkins属于一个JAVA 开源项目,需要java容器才能运行jenkins,所以需要安装JDK+Tomcat。如果直接下载RPM包,也可以,因为无论你是下载Java 的 WAR包,还是下载RPM包,都是自带Jetty容器的,jetty类始于Tomcat,是一个Java web 容器
官网:https://jenkins.io

  • 1:使用RPM包安装Jenkins
1:创建镜像仓库(如果不需要检测镜像的完整性,那么可以编辑/etc/yum.repos.d/jenkins.repo文件,设置 gpgcheck= 0 即可)
wget -O /etc/yum.repos.d/jenkins.repo https:/ /pkg.jenkins.io/redhat-stable/jenkins.repo
2:yum 安装(无需配置Tomcat容器,自大jetty容器)
yum install jenkins
3:查看jenkins所提供的文件
[root@ 7 ~] # rpm -ql jenkins
/etc/init.d/jenkins
/etc/logrotate.d/jenkins
/etc/sysconfig/jenkins
/usr/ lib/jenkins
/usr/ lib/jenkins/jenkins.war
/usr/sbin/rcjenkins
/var/cache/jenkins
/var/ lib/jenkins
/var/log/jenkins
4:直接运行Jenkins
service jenkins start
5:在浏览器访问Jenkins,在/var/ lib/jenkins/secrets/initialAdminPassword文件中拷贝需要的密钥,登入Jenkins,在Jenkins平台安装构建,发布,部署所依赖的插件
http:/ /192.168.43.10:8080
  • 2:使用Jenkins的war包安装Jenkins
1:直接在官网下载Jenkins的war包
wget https: //mirrors.tuna.tsinghua.edu.cn /jenkins/war-stable /2.73.2/jenkins.war
2:直接使用jvm运行Jenkins
java -jar jenkins.war &
3:使用浏览器访问,与RPM包安装过程一样
http: // 192.168. 43.11: 8080
  • 3:在Tomcat容器中部署Jenkins
0:安装openjdk的devel包
yum install -y java -1.8 .0-openjdk-devel
1:也可以不使用自带的jetty容器,使用Tomcat容器运行Jenkins,安装JDK
vi /etc/profile.d/java.sh,添加如下配置
export JAVA_HOME=/usr
2:下载Tomcat
wget http: //mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.0.47/bin/apache-tomcat-8.0.47.tar.gz
tar xf apache-tomcat -8.0 .47.tar.gz -C /usr/local
ln -s /usr/local /apache-tomcat-8.0.47 /usr /local/tomcat
vi /etc/profile.d/tomcat.sh, 添加如下配置
CATALINA_BASE= /usr/local/tomcat
PATH=$CATALINA_BASE/ bin:$PATH
export PATH CATALINA_BASE
3:下载Jenkins的war包
wget http: //mirrors.jenkins.io/war-stable/1.651.3/jenkins.war
4:部署Jenkins,这里我就不演示如何通过管理界面部署Tomcat的APP程序,这里直接将war包解压到部署目录即可,在 /usr/local /tomcat/webapps目录下创建一个Jenkins目录
mkdir /usr/local /tomcat/webapps/jenkins
cp jenkins.war /usr/local /tomcat/webapps/jenkins
cd /usr/local /tomcat/webapps/jenkins
jar xf jenkins.war
5:启动Tomcat,可以查看Tomcat的日志,看看Jenkins是否被部署成功
catalina.sh start
tail -100f /usr/local /tomcat/logs/catalina.out
6:在浏览器访问
http: //192.168.43.12:8080/jenkins/
  • 4:最后统一的界面都是这样的,需要选取集成到Jenkins的插件(新版本需要,1.6版本不要)

Alt text

  • 5:选择 git 和 ssh 相关的创建安装
  • 6:创建管理员用户,且用管理员用户登入Jenkins

Alt text

(三) Jenkins 平台介绍


  • 代码的编译工具介绍:MAKE、ANT、MAVEN
1make
一般编译一个C语言开发的程序,都是先使用源码包自带的configure程序先生成makefile文件,在makefile文件中会记录软件所依赖的各种库,以及其他软件程序,然后再通过 make工具读取makefile文件的指令,进行编译。 make install 是用于安装,它也从Makefile中读取指令,将编译好的程序安装到指定位置
2:ant
是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,ant是Java语言开发
3:maven
Maven工具是对ant工具的进一步改进,在 make工具中,如果我们要编译某些源文件,首先要安装编译器等工具。有时候需要不同版本的编译器,在java的编译器需要不同的各种包的支持,如果把每个包都下载下来,在makefile中进行配置制定,当需要的包非常多时,很难管理。Maven与 make类似,是个构建(build)工具,一般用于构建Java源码文件
  • maven工具介绍
1:下载maven的二进制包
wget http: //mirrors.hust.edu.cn/apache/maven/maven-3/3.5.2/binaries/apache-maven-3.5.2-bin.tar.gz
2:解压到对应的目录
tar xf apache-maven -3.5 .2-bin.tar.gz -C /usr/local/
ln -s /usr/local /apache-maven-3.5.2 /usr /local/maven
3:在maven的安装目录下,有个 /usr/local /maven/bin/mvn工具,这个工具是用于编译源码、构建、打包的。Jenkins就是将maven集成到自己的平台上对源码进行编译、构建、打包的
ll /usr/local /maven/bin/mvn
  • 1:设定全局工具配置,保存

Alt text

Alt text

  • 2:搭建svn服务器
# 安装
yum install -y subversion
# 创建一个版本库,取名为java, subversion默认以/var/svn作为代码的根目录,如何需要修改可以在/etc/sysconfig/svnserve文件中修改
mkdir /var/svn
svnadmin create /var/svn/java
# 编辑/var/svn/java/conf/passwd文件,新增两个用户
[users]
uplooking = 123456
home = 123456
# 编辑/var/svn/java/conf/authz文件,给用户授权,添加如下内容,表示uplooking用户对整个版本库有读写权限,home用户对整个版本库有读权限
[/]
uplooking = rw
home = r
# 编辑/var/svn/java/conf/svnserve.conf文件,配置如下内容
non-access = none // 非授权用户没有权限
auth-access = write // 授权用户有写权限,但是必须参考authz文件的设定
password-db = passwd // 指定有权的用户
authz-db = authz // 指定有权的用户的权限
realm = java // 指定登入之后显示的提示信息
# 启动svn服务器, 查看3690 端口是否已经监听
systemctl start svnserve.service
# 安装httpd,实现svn版本库可以通过http协议被访问
yum install -y httpd httpd-devel mod_dav_svn
# 编辑/etc/httpd/conf.modules.d/00-dav.conf文件,添加
LoadModule dav_lock_module modules/mod_dav_lock.so
LoadModule dav_svn_module modules/mod_dav_svn.so
# 编辑/etc/httpd/conf/httpd.conf文件,在文件的末尾位置添加
# 启用svn模块
DAV svn
# 启用svn的根路径
SVNListParentPath on
# 指定svn的根路径
SVNParentPath /var/svn
# 指定认证为basic认证
AuthType Basic
# 指定认证的提示
AuthName "Authorization"
# 指定认证的用户密码文件
AuthUserFile /etc/httpd/.svnpasswd
# 需要合法的用户才能访问
Require valid-user
# 设置basic用户名和密码
htpasswd -c -m /etc/httpd/.svnpasswd uplooking
# 启动httpd
systemctl start httpd
# 让httpd访问svn的数据目录时候有权限
chown -R apache.apache /var/svn/
# 浏览器访问:
http: //192.168.43.11/svn/
  • 在Windows平台,安装小乌龟SVN客户端(已经上传到群里)
# 安装完毕后,点击右键,选择svn checkout,输入用户名和密码,http://192.168.43.10/svn/java
# 点击右键,选择tortoiseSVN, 选择要上传的源码目录,或文件(上传一个Java的源码文件,且带pom.xml的文件)
  • 回到Jenkins中(新建一个项目,新建一个maven项目)

Alt text

Alt text

Alt text

Alt text

(四) 一次完整的构建过程总结


  • 1:配置SVN服务器
过程如上
  • 2:配置Jenkins服务器
1:安装oracle的JDK,安装maven编译,打包工具
2:在Jenkins中,添加需要的插件, 如下
SVN
SSH
Publish Over SSH
Maven
GIT
3:创建一个任务,在任务中选择SVN服务器的地址,填写授权用户,且调用本地的mvn clean package脚本,将编译好的源码包,打包为war包
4:启动这个新的任务,开始构建,打包
5:将构建的的war包拷贝到tomcat容器所在的部署目录中
  • 3:配置Tomcat容器
1:配置一个Tomcat容器
2:将构建的的war包拷贝到tomcat容器所在的部署目录中
3:启动Tomcat,且通过浏览器访问

(五) 使用ssh插件实现自动化部署


Alt text

Alt text

(六) 使用email插件实现告警


  • 设置发送给谁

Alt text

  • 设置谁发送邮件

Alt text

  • 检测效果

Alt text

  • 在对应构建任务中添加构建后的操作, 设定触发器

Alt text

Alt text

Alt text

你可能感兴趣的:(Jenkins 实现 CI 、CD)