CI/CD架构简介和配置
CI/CD架构
CI/CD架构简介
CI/CD:持续集成/持续发布
continuous integration/continuous deployment
CI/CD主要运用了jenkins进行对后端的开发代码的拉取,经过自动编译,打包,测试后,自动发布到tomcat服务器上,实现自动化的产品上线。
CI/CD顶梁柱jenkins简介
jenkins的功能是将获取的代码进行统一的编译,打包,发布到tomcat等容器上。
其操作界面友好,由java语言编写,需要安装jdk。
jenkins特性
- 易安装,仅需要一个war包和jdk。
- 图形化页面,配置简单。
- 分布式构建:能够连接多台机器构建/测试。
- 支持第三方插件:可以通过第三方插件来扩展功能,进行二次开发。
jenkins工作流程

- step1:开发人员将代码上传到版本库
- step2:jenkins通过配置从版本库拉取代码文件
- step3:jenkins通过maven插件,将代码编译测试
- step4:step3无误后通过ssh插件传递到tomcat服务器上。
- step5:应用服务器通过shell脚本自动实现产品上线。
部署jenkins
- 版本库部署,获取代码。(略)
- 安获取jdk包,maven包,tomcat包,jenkins.war包,并解压到/usr/local下,改成简单的名字。(略)
war包地址:http://updates.jenkins-ci.org/download/war/ - 改写jdk和码maven的环境变量,将maven移到java目录下
[root@jenkins ~]# vi /etc/profile
JAVA_HOME=/usr/local/java
MAVEN_HOME=/usr/local/java/maven
PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL JAVA_HOME MAVEN_HOME
[root@jenkins ~]# source /etc/profile
[root@jenkins ~]# java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
[root@jenkins ~]# mvn -v
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-18T02:33:14+08:00)
Maven home: /usr/local/java/maven
Java version: 1.8.0_191, vendor: Oracle Corporation, runtime: /usr/local/java/jre
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-693.el7.x86_64", arch: "amd64", family: "unix"
清理tomcat环境
[root@jenkins ~]# rm -rf /usr/local/tomcat/webapps/*
将jenkins.war移到该目录下
[root@jenkins ~]# mv /jenkins.war /usr/local/tomcat/webapps/
[root@jenkins ~]# /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/java
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Tomcat started.
- 为了jenkins利用ssh的免密登陆功能,要将jenkins服务器的ssh公钥发送给web服务器
[root@jenkins ~]# ssh-keygen
[root@jenkins ~]# ssh-copy-id -i 【服务器端的ip】
浏览器访问页面
http://192.168.178.132:8080/jenkins
完成密码验证后,安装推荐的插件

添加以下所需要的插件
Deploy to container,Maven Integration,Publish Over SSH,ssh见图,
点击“直接安装”



配置ssh
记得“保存”配置



新增jdk,maven
记得“保存”配置!



jenkins构建发布
回到主页,新建item





部署web服务器:
- 安装jdk,tomcat,改写环境变量
[root@webs ~]# vi /etc/profile
添加以下内容:
export JAVA_HOME=/usr/local/java
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
export TOMCAT_HOME=/usr/local/tomcat
[root@webs ~]# source /etc/profile
清理tomcat默认发布目录下的neirong
[root@webs ~]# rm -rf /usr/local/tomcat/webapps/*
创建自动上线的脚本
[root@webs ~]# mkdir -p /opt/script
[root@webs ~]# cd /opt/script
[root@webs script]# vi app-jenkins.sh
#!/usr/bin/bash
#本脚本适用于jenkins持续集成,实现备份war包到代码更新上线!使用时请注意全局变量。
#================
#Defining variables
export JAVA_HOME=/usr/local/java
webapp_path="/usr/local/tomcat/webapps"
tomcat_run="/usr/local/tomcat/bin"
updata_path="/data/update/`date +%F-%T`"
backup_path="/data/backup/`date +%F-%T`"
tomcat_pid=`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`
files_dir="easy-springmvc-maven"
files="easy-springmvc-maven.war"
job_path="/root/upload"#Preparation environment
echo "Creating related directory"
mkdir -p $updata_path
mkdir -p $backup_pathecho "Move the uploaded war package to the update directory"
mv $job_path/$files $updata_pathecho "========================================================="
cd /opt
echo "Backing up java project"
if [ -f $webapp_path/$files ];thentar czf $backup_path/`date +%F-%H`.tar.gz $webapp_pathif [ $? -ne 0 ];thenecho "打包失败,自动退出"exit 1elseecho "Checking if tomcat is started"if [ -n "$tomcat_pid" ];thenkill -9 $tomcat_pidif [ $? -ne 0 ];thenecho "tomcat关闭失败,将会自动退出"exit 2fificd $webapp_pathrm -rf $files && rm -rf $files_dircp $updata_path/$files $webapp_pathcd /opt$tomcat_run/startup.shsleep 5echo "显示tomcat的pid"echo "`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`"echo "tomcat startup"echo "请手动查看tomcat日志。脚本将会自动退出"fi
elseecho "Checking if tomcat is started"if [ -n "$tomcat_pid" ];thenkill -9 $tomcat_pidif [ $? -ne 0 ];thenecho "tomcat关闭失败,将会自动退出"exit 2fificp $updata_path/$files $webapp_path$tomcat_run/startup.shsleep 5echo "显示tomcat的pid"echo "`ps -ef | grep tomcat | grep -v grep | awk '{print $2}'`"echo "tomcat startup"echo "请手动查看tomcat日志。脚本将会自动退出"
fi
给脚本执行权限
[root@webs ~]# chmod 777 /opt/script/app-jenkins.sh
在jenkins页面上开始构建


在web服务器的/usr/local/tomcat/webapps/下可以看到相应的war包,再用浏览器访问web服务器检测就可以了。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
