什么是CI:Continuous Integration,也就是持续集成
什么是CD:Continuous Delivery 和 Continuous Deployment,也就是持续交付、持续部署
持续集成
:就是开发提交了新代码之后,立刻进行构建、(单元)测试。根据测试结果,测试过程可以确定新代码和原有代码能否正确地集成在一起,如果测试过程有问题,那么将返回代码给开发部门
持续交付
:在持续集成的基础上,将集成后的代码部署到更贴近于真实的生产环境中。在贴近真实的生成环境中,可以提高数据支撑,且进一步做测试,如果进一步测试没有问题,那么可以部署到线上的生成环境中
持续部署
:是在持续交付的基础上,把部署到生产环境的过程自动化,实现部署无需人工参与,如何在部署的过程中出现问题,将立即回滚代码
(一) Jenkins持续集成简介
目前主流网站部署方法,通过可以通过Jenkins平台实现全自动部署+测试,Jenkins是一个可扩展的持续集成引擎,是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
有了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:创建镜像仓库(如果不需要检测镜像的完整性,那么可以编辑/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 ~]
/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
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:
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:
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:
4:最后统一的界面都是这样的,需要选取集成到Jenkins的插件
(新版本需要,1.6版本不要)
5:选择 git 和 ssh 相关的创建安装
6:创建管理员用户,且用管理员用户登入Jenkins
(三) Jenkins 平台介绍
1:
make:
一般编译一个C语言开发的程序,都是先使用源码包自带的configure程序先生成makefile文件,在makefile文件中会记录软件所依赖的各种库,以及其他软件程序,然后再通过
make工具读取makefile文件的指令,进行编译。
make install 是用于安装,它也从Makefile中读取指令,将编译好的程序安装到指定位置
2:ant
是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,ant是Java语言开发
3:maven
Maven工具是对ant工具的进一步改进,在
make工具中,如果我们要编译某些源文件,首先要安装编译器等工具。有时候需要不同版本的编译器,在java的编译器需要不同的各种包的支持,如果把每个包都下载下来,在makefile中进行配置制定,当需要的包非常多时,很难管理。Maven与
make类似,是个构建(build)工具,一般用于构建Java源码文件
1:下载maven的二进制包
wget
http:
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
# 安装
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
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:
在Windows平台,安装小乌龟SVN客户端(已经上传到群里)
# 安装完毕后,点击右键,选择svn checkout,输入用户名和密码,http://192.168.43.10/svn/java
# 点击右键,选择tortoiseSVN, 选择要上传的源码目录,或文件(上传一个Java的源码文件,且带pom.xml的文件)
回到Jenkins中
(新建一个项目,新建一个maven项目)
(四) 一次完整的构建过程总结
过程如上
1:安装oracle的JDK,安装maven编译,打包工具
2:在Jenkins中,添加需要的插件, 如下
SVN
SSH
Publish Over SSH
Maven
GIT
3:创建一个任务,在任务中选择SVN服务器的地址,填写授权用户,且调用本地的mvn clean package脚本,将编译好的源码包,打包为war包
4:启动这个新的任务,开始构建,打包
5:将构建的的war包拷贝到tomcat容器所在的部署目录中
1:配置一个Tomcat容器
2:将构建的的war包拷贝到tomcat容器所在的部署目录中
3:启动Tomcat,且通过浏览器访问
(五) 使用ssh插件实现自动化部署
(六) 使用email插件实现告警