文章目录
一、CI/CD持续集成/持续发布
开发(git) -->git主库–>jenkins(git+jdk+tomcat+maven打包+测试)–>发布到tomcat服务器
CI (Continuous Integration)持续集成 代码集成时不断执行过程和反馈
CD 持续交付 把代码部署到测试环境 之后持续部署在生产环境
发布类型: 平滑发布、灰度发布、A/B发布
二、Jenkins介绍
Jenkins用Java语言编写,可在Tomcat等流行的servlet容器中运行,也可独立运行。
主要用于持续、自动的构建/测试软件项目、监控一些定时执行的任务。
jenkins通常与版本管理工具(SCM)、构建工具结合使用;常用的版本控制工具有SVN、GIT。
jenkins构建工具有Maven、Ant、Gradle。
Jenkins是帮我们将代码进行统一的编译打包、还可以放到tomcat容器中进行发布。
通过配置将以前:编译、打包、上传、部署到Tomcat中的过程交由Jenkins,Jenkins通过给定的代码地址URL,将代码拉取到其“宿主服务器”(Jenkins的安装位置),进行编译、打包和发布到web容器中。
①、Jenkins特性
分布式构建、插件支持、任务(Job)和构建(build)、文件识别、测试报告
②、工作流程
- 开发者检入代码到源代码仓库。
- CI每一个项目创建了单独的工作区。当预设或请求新的构建时,它将仓库的源码存放到对应的工作区。
- CI系统会在对应的工作区内执行构建过程。
- 构建完成后,CI系统会在新的构建中执行定义的测试。完成后触发通知(Email,RSS等等)给相关的当事人。
- 如果构建成功,这个构件会被打包并转移到一个部署目标或存储为软件仓库中的一个新版本。
- CI系统通常会根据请求发起相应的操作,诸如即时构建、生成报告,或者检索一些构建好的构件。
三、Jenkins部署
环境
两台Centos7主机
IP Role
192.168.116.131 jenkins
192.168.116.132 tomcat
1、安装依赖
# yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
2、部署Git
# wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz
# tar -xf git-2.9.5.tar.gz
# cd git-2.9.5/
# make prefix=/usr/local/git all # 编译 prefix 前缀
# make prefix=/usr/local/git install # 安装
------------------------------------------------------------------------------------------
# vim /etc/profile # 修改环境变量
PATH=$PATH:$HOME/bin:/usr/local/git/bin
------------------------------------------------------------------------------------------
# source /etc/profile
# git --version
3、jdk环境部署
# yum -y remove java-1.8.0-openjdk* # 卸载openjdk
# tar -xf jdk-8u151-linux-x64.tar.gz -C /usr/local
# mv /usr/local/jdk1.8.0_151/ /usr/local/jdk
------------------------------------------------------------------------------------------
# vim /etc/profile # 修改环境变量
PATH=$PATH:$HOME/bin:/usr/local/git/bin
JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin
------------------------------------------------------------------------------------------
# source /etc/profile
# java -version
4、部署Maven
# wget http://mirror.bit.edu.cn/apache/maven/maven-3/3.8.5/binaries/apache-maven-3.8.5-bin.tar.gz
# tar -xf apache-maven-3.8.5-bin.tar.gz -C /usr/local/
# mv /usr/local/apache-maven-3.8.5/ /usr/local/maven
------------------------------------------------------------------------------------------
# vim /etc/profile # 修改环境变量
PATH=$PATH:$HOME/bin:/usr/local/git/bin
JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin
export M2_HOME=/usr/local/maven
export M2=$M2_HOME/bin
PATH=$M2:$PATH:$HOME/bin:/usr/local/git/bin
export JAVA_HOME=/usr/local/jdk
export PATH
------------------------------------------------------------------------------------------
# source /etc/profile
# mvn -version
5、部署Tomcat
# wget https://tomcat.apache.org/download-10.cgi
# tar -xf apache-tomcat-9.0.1.tar.gz -C /usr/local/
# mv /usr/local/apache-tomcat-9.0.1/ /usr/local/tomcat
------------------------------------------------------------------------------------------
# vim /etc/profile # 修改环境变量
PATH=$PATH:$HOME/bin:/usr/local/git/bin
JAVA_HOME=/usr/local/jdk
export PATH=$PATH:$JAVA_HOME/bin
export M2_HOME=/usr/local/maven
export M2=$M2_HOME/bin
PATH=$M2:$PATH:$HOME/bin:/usr/local/git/bin
export JAVA_HOME=/usr/local/jdk
export PATH
CATALINA_HOME=/usr/local/tomcat
export CATALINA_HOME
------------------------------------------------------------------------------------------
# source /etc/profile
# /usr/local/tomcat/bin/start.up
# /usr/local/tomcat/bin/shutdown.sh
6、部署Jenkins
# wget https://mirror.xmission.com/jenkins/war/2.349/jenkins.war
# cp jenkins.war /usr/local/tomcat/webapps/
# /usr/local/tomcat/bin/startup.sh
浏览器访问:http://192.168.116.131:8080/jenkins
7、登录Jenkins
# cat /root/.jenkins/secrets/initialAdminPassword
创建用户
8、管理插件
①、Deploy to container 支持自动化将代码部署到tomcat容器
②、Maven Integration jenkins 利用maven编译,打包,所需插件
③、GitHub Authentication GitHub Organization Folder
④、Publish Over SSH
9、全局工具配置
①、配置Jdk
②、配置Git
③、配置Mvn
10、SSH推送配置
maven将开发产生的*.war包通过SSH自动推送到远程应用服务器上
# ssh-keygen
# ssh-copy-id 192.168.116.132
# cat /root/.ssh/id_rsa
①、配置ssh
②、配置推送服务器
11、新建任务
①、General设置
②、选择版本控制器和仓库地址
测试地址: https://github.com/bingyue/easy-springmvc-maven
③、设置构建(编译打包)
claen package -Dmaven.test.skip=true
④、构建后操作
Name:推送服务器name
Source files:拉取的源代码目录
Remove prefix:去除前缀,只推送war包
Remote directory:远程服务器接收目录
Exec command:远程服务器接收后的动作
12、远程服务器端
# mkdir /jenkins/war -p # 源码存放目录
# mkdir /jenkins/sh # 执行动作脚本目录
--------------------------------------------------------
# vim /jenkins/sh/deploy.sh # 测试脚本
cp -r /jenkins/war/*.war /jenkins
touch /mnt/aaaaaa.txt
--------------------------------------------------------
# chmod +x /jenkins/sh/deploy.sh
13、构建任务
①、查看控制台输出
②、远程服务器接收
# ls /jenkins/war/
easy-springmvc-maven.war
# ls /jenkins/
easy-springmvc-maven.war sh war
# ls /mnt/
aaaaaa.txt