企业级CI/CD 持续集成/交付/发布
项目部署

一:jenkins部署

1.安装插件
• Maven插件 Maven Integration plugin
4-企业级CICD 持续集成交付发布 - 图1
• 发布插件 Deploy to container Plugin
4-企业级CICD 持续集成交付发布 - 图2
需要安装插件如下:
安装插件Deploy to container —-支持自动化代码部署到tomcat容器
Git 插件 可能已经安装
4-企业级CICD 持续集成交付发布 - 图3
4-企业级CICD 持续集成交付发布 - 图4
4-企业级CICD 持续集成交付发布 - 图5
Maven Integration :jenkins利用Maven编译,打包所需插件
Publish Over SSH :通过ssh连接
4-企业级CICD 持续集成交付发布 - 图6
2.安装过程
系统管理—->插件管理——>可选插件—->过滤Deploy to container——>勾选—->直接安装
4-企业级CICD 持续集成交付发布 - 图7
4-企业级CICD 持续集成交付发布 - 图8
4-企业级CICD 持续集成交付发布 - 图9
输入插件名后按回车!
4-企业级CICD 持续集成交付发布 - 图10
4-企业级CICD 持续集成交付发布 - 图11
4-企业级CICD 持续集成交付发布 - 图12
4-企业级CICD 持续集成交付发布 - 图13
4-企业级CICD 持续集成交付发布 - 图14
以上所有插件安装完成,开始配置ssh
4-企业级CICD 持续集成交付发布 - 图15
4-企业级CICD 持续集成交付发布 - 图16
4-企业级CICD 持续集成交付发布 - 图17
4-企业级CICD 持续集成交付发布 - 图18
key:指的是jenkins服务器用哪个用户去远程连接程序服务器就是那个用户的私钥。(记得做免密,jenkins给web-server做免密)
[root@bogon ~]# cat .ssh/id_rsa //若没有就创建密钥
[root@bogon ~]# ssh-keygen
4-企业级CICD 持续集成交付发布 - 图19
5.添加远程ssh-server:
4-企业级CICD 持续集成交付发布 - 图20
4-企业级CICD 持续集成交付发布 - 图21
4-企业级CICD 持续集成交付发布 - 图22
配置免密登录:
[root@jenkins ~]# ssh-copy-id 192.168.112.136
4-企业级CICD 持续集成交付发布 - 图23
这时再重新测试,就会成功了。
4-企业级CICD 持续集成交付发布 - 图24
6.配置jdk,maven命令,全局配置
4-企业级CICD 持续集成交付发布 - 图25
4-企业级CICD 持续集成交付发布 - 图26
4-企业级CICD 持续集成交付发布 - 图27
4-企业级CICD 持续集成交付发布 - 图28
4-企业级CICD 持续集成交付发布 - 图29
[root@jenkins ~]# yum -y install git
4-企业级CICD 持续集成交付发布 - 图30
4-企业级CICD 持续集成交付发布 - 图31
4-企业级CICD 持续集成交付发布 - 图32
4-企业级CICD 持续集成交付发布 - 图33

二:构建发布任务

4-企业级CICD 持续集成交付发布 - 图34
4-企业级CICD 持续集成交付发布 - 图35
4-企业级CICD 持续集成交付发布 - 图36
选择丢弃旧的构建—-策略选择Log Rotation,保持构建的天数选择1———保持构建的最大个数选择5
4-企业级CICD 持续集成交付发布 - 图37
4-企业级CICD 持续集成交付发布 - 图38
4-企业级CICD 持续集成交付发布 - 图39
这里已经准备好github仓库地址:
https://github.com/bingyue/easy-springmvc-maven
4-企业级CICD 持续集成交付发布 - 图40
4-企业级CICD 持续集成交付发布 - 图41
4-企业级CICD 持续集成交付发布 - 图42
构建触发器选择默认配置即可:
4-企业级CICD 持续集成交付发布 - 图43
4-企业级CICD 持续集成交付发布 - 图44
2.调用mave命令
4-企业级CICD 持续集成交付发布 - 图45
4-企业级CICD 持续集成交付发布 - 图46
构建任务总结:
4-企业级CICD 持续集成交付发布 - 图47
3.部署java服务器,做jenkins打包上线
[root@java-server ~]# mkdir -p /data/application
上传jdk
[root@java-server ~]# tar xzf jdk-8u191-linux-x64.tar.gz -C /usr/local/
[root@java-server ~]# cd /usr/local/
[root@java-server local]# mv jdk1.8.0_191/ java
下载tomcat
[root@java-server ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.42/bin/apache-tomcat-8.5.42.tar.gz
[root@java-server ~]# tar xzf apache-tomcat-8.5.42.tar.gz -C /data/application/
[root@java-server ~]# cd /data/application/
[root@java-server application]# mv apache-tomcat-8.5.42/ tomcat
设置环境变量
[root@java-server ~]# vim /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=/data/application/tomcat
[root@java-server ~]# source /etc/profile
测试:
[root@java-server ~]# 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)
删除tomcat默认发布目录下面的内容:
[root@java-server ~]# rm -rf /data/application/tomcat/webapps/*
[root@java-server ~]# cd /data/application/tomcat/webapps/
[root@java-server webapps]# ls
创建目录和脚本:
[root@java-server ~]# mkdir /opt/script #创建脚本目录
4-企业级CICD 持续集成交付发布 - 图48
4-企业级CICD 持续集成交付发布 - 图49
[root@java-server ~]# cd /opt/script
[root@java-server ~]# vim app-jenkins.sh #创建脚本
4-企业级CICD 持续集成交付发布 - 图50
4-企业级CICD 持续集成交付发布 - 图51
4-企业级CICD 持续集成交付发布 - 图52
4-企业级CICD 持续集成交付发布 - 图53
4-企业级CICD 持续集成交付发布 - 图54
4-企业级CICD 持续集成交付发布 - 图55
4-企业级CICD 持续集成交付发布 - 图56
很简单的脚本:if 变量 命令

!/usr/bin/bash
#本脚本适用于jenkins持续集成,实现备份war包到代码更新上线!使用时请注意全局变量。
#================
#Defining variables
export JAVA_HOME=/usr/local/java
webapp_path=”/data/application/tomcat/webapps”
tomcat_run=”/data/application/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_path

echo “Move the uploaded war package to the update 2directory”
mv $job_path/$files $updata_path

echo “=========================================================”
cd /opt
echo “Backing up java project”
if [ -f $webapp_path/$files ];then
tar czf $backup_path/date +%F-%H.tar.gz $webapp_path
if [ $? -ne 0 ];then
echo “打包失败,自动退出”
exit 1
else
echo “Checking if tomcat is started”
if [ -n “$tomcat_pid” ];then
kill -9 $tomcat_pid
if [ $? -ne 0 ];then
echo “tomcat关闭失败,将会自动退出”
exit 2
fi
fi
cd $webapp_path
rm -rf $files && rm -rf $files_dir
cp $updata_path/$files $webapp_path
cd /opt
$tomcat_run/startup.sh
sleep 5
echo “显示tomcat的pid”
echo “ps -ef | grep tomcat | grep -v grep | awk '{print $2}'
echo “tomcat startup”
echo “请手动查看tomcat日志。脚本将会自动退出”
fi
else
echo “Checking if tomcat is started”
if [ -n “$tomcat_pid” ];then
kill -9 $tomcat_pid
if [ $? -ne 0 ];then
echo “tomcat关闭失败,将会自动退出”
exit 2
fi
fi
cp $updata_path/$files $webapp_path
$tomcat_run/startup.sh
sleep 5
echo “显示tomcat的pid”
echo “ps -ef | grep tomcat | grep -v grep | awk '{print $2}'
echo “tomcat startup”
echo “请手动查看tomcat日志。脚本将会自动退出”
fi
[root@java-server ~]# vim app-jenkins.sh
脚本内容在后面
[root@java-server ~]# chmod a+x app-jenkins.sh #添加执行权限
[root@java-server ~]# mv app-jenkins.sh /opt/script/
4.回到jenkins页面开始构建任务
4-企业级CICD 持续集成交付发布 - 图57
4-企业级CICD 持续集成交付发布 - 图58
4-企业级CICD 持续集成交付发布 - 图59
4-企业级CICD 持续集成交付发布 - 图60
4-企业级CICD 持续集成交付发布 - 图61
浏览器访问:
http:// 192.168.112.136:8080/easy-springmvc-maven
4-企业级CICD 持续集成交付发布 - 图62
常见报错:
4-企业级CICD 持续集成交付发布 - 图63
这种错误是因为请求超时,那就多构建几次。
4-企业级CICD 持续集成交付发布 - 图64
这种错误是因为在jenkins上的部署时以下这个位置多写了一个l,修改一下就好了。
4-企业级CICD 持续集成交付发布 - 图65