4,企业级CI/CD 持续集成/交付/发布

实验一:github+jenkins+web(tomcat)
构建的时候 网络连接超时(正常现象) githud仓库地址
 1.安装对应的插件(jenkins) 
 Deploy to container
 Git (插件比较多)
 Maven Integration
 Publish Over SSH 
 2.配置ssh
 添加jenkins的私钥到key的位置
 配置web-server的相关信息(name,ip地址,用户,目录)
 jenkins---> web-server 免密
 3.全局配置 git maven jdk 相关配置
 4.创建任务
实验二:gitlab+jenkins+web(tomcat)
更换了存放项目的仓库 gitlab 私有仓库(本地) 源码的下载速度也会提升
 gitlab正常使用,gitlab仓库, cloud 项目上传到仓库
 注意:在提交代码
 有git命令,安装git,添加全局配置(username email)
 git config --global user.email "xingdianvip@gmail.com"
 git config --global user.name "xingdian"

 取消gitlab中cloud的仓库main分支的保护(能够向main这个分支提交代码)
 如果使用域名做本地解析,在gitlab添加提交服务器的公钥
 git clone git@gitlab.example.com:xingdian/cloud.git
 将项目压缩包上传到服务器 .zip 解压 并把解压后的内容拷贝到仓库目录下
 git提交代码到cloud仓库 main分支

 项目上传到仓库(操作)
 更换成gitlab仓库地址
 去掉gitlab的认证
实验三:gitlab++jenkins+web(tomcat)+webbook自动发布
当我们修改仓库代码,提交的时候,提交完成他会自动触发jenkins,实验项目的自动发布

 如果开发人员修改了代码;(钩子)利用webhook自动去代码仓库(gitlab)获取新的代码,在jenkins上利用
 maven进行构建;
 构建完成后发布到web-server(新版本的上线【新版本自动化上线】)

 1.jenkins
 安装插件(Generic Webhook Trigger)
 配置项目(上午cloud项目,在这个基础上做的修改)
 在构建触发器:
 在将更改推送到 GitLab 时进行构建。GitLab webhook URL: 
 http://192.168.222.129:8080/jenkins/project/cloud

 保证(gitlab的)webhook能够连接jenkins
 配置 ---> gitlab /project 对勾去掉
 全局安全配置 ----> 保证登录用户可以做任何事情(匿名用户具有可读权限)
 2.gitlab
 开启本地网络访问权限(目录:webhook能够连接jenkins)
 menu ---> admin --->设置 --->网络 ----> 出站请求 允许即可
 配置项目的webhook
 项目cloud--->设置--->webhook (添加) 网址:http://192.168.222.129:8080/jenkins/project/cloud
 ---> 测试 200 ok
一,jenkins部署(github+jenkins+web(tomcat))
1,安装插件
1,Maven插件:Maven Integration plugin

2,发布插件:Deploy to container (支持自动化代码部署到tomcat容器)

3,插件:含Git的所有插件

4,jenkins利用Maven编译,打包所需插件:Maven Integration

5,通过ssh连接:Publish Over SSH
2,安装过程

例如:系统管理—>插件管理---->可选插件—>过滤Git---->勾选—>直接安装

image-20220516205523098 image-20220516205825855

其他的插件安装同上!!!

3,系统配置
image-20220516210447668

ssh配置(jenkins的私钥,免密操作ssh-copy-id 192.168.222.132)

image-20220516210954857 image-20220516211916905

4,配置jdk和maven命令,全局配置

img img img img
4,创建发布任务

在这里插入图片描述
在这里插入图片描述


在这里插入图片描述

构建触发器
在这里插入图片描述
在这里插入图片描述

调用maven命令
在这里插入图片描述

其他不做修改,最后保存
在这里插入图片描述

img

5,jenkins服务器上要下载git(yum -y install git)
6,部署jdk+tomcat
[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@192 ~]# vim /etc/profile

JAVA_HOME=/usr/local/java

PATH=$JAVA_HOME/bin:$PATH

export JAVA_HOME  $PATH

[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 ~]# mkdir /opt/script #创建脚本目录

[root@java-server ~]# vim app-jenkins.sh  #创建脚本
#!/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_pat
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 ~]# chmod +x app-jenkins.sh  #添加执行权限
7,回到jenkins页面上开始构建任务
image-20220516215205782

image-20220516215608825

image-20220517173835123
8,打开web服务器页面访问http://192.168.222.132:8080/easy-springmvc-maven/

界面访问成功

image-20220516215841569

9,补充注意:github远程仓库代码包(生产环境提前有远程仓库和代码库)

image-20220516215956374

至此,实验一的部署过程就完毕了:github+jenkins+web(tomcat)

二,jenkins部署(gitlab+jenkins+web(tomcat))

gitlab访问网址:(https://www.haha.com/)

1,在gitlab上创建一个公开的空白项目(自定义项目名称为cloud)

image-20220517175700092

image-20220517175944280

2,在gitlab服务器上上传java代码包(下载安装git:yum -y install git)

image-20220517180240030

3,添加git全局配置
[root@gitlab ~]#git config  --global user.email "chen13665026727@163.com"
[root@gitlab ~]#git config  --global user.name "chenshuai"
[root@gitlab ~]#git config  --global   http.sslVerify  false
[root@gitlab ~]# cat .gitconfig 
[user]
        name = chenshuai
        email = chen13665026727@163.com
4,取消gitlab中cloud的仓库main分支的保护(能够向main这个分支提交代码)

在cloud仓库下–>设置–>仓库–>受保护的分支(取消)
在这里插入图片描述

image-20220517181559598

[root@gitlab ~]#ssh-keygen
[root@gitlab ~]#cat .ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCraymQIsIhoAdCqunTkyOKTEgLu4pVHE6bEWQX5iboWyJdWB27TMMb
F3Ujd9JTcMS7eDg68LDL08wx9ruqzUoyTCifJTjzLscaKU8vVLspuwE+Eu/ezUqKeGC+D/JvHShouyFjf/ZGonjy49vs
xrz61Pnw6dOro1CPyMeRaKnLHnhXzxaUTtc/nTen9ui2bICQyjTNs+G3N29+P+GDVJ/1+zx/VSopBd93/o6pC+wtfh8z
NAjaPCbS8EV9Qdu3fmQARFdx7rj1wXV9AYc8B0FS5RBrvu7nzamIA69KgmpTH3wO+mTFuGIq/w7fy8ZU8J5AJV/34eBG
/pqI0t8iYVVJ root@192.168.222.128

在这里插入图片描述

5,将创建的空白远程项目cloud下载克隆到本地
在这里插入图片描述

[root@gitlab ~]#git  clone  git@www.haha.com:plat-sp/cloud.git

[root@gitlab ~]# ls 
anaconda-ks.cfg   easy-springmvc-maven-master  cloud  
         
[root@gitlab ~]#cp -r easy-springmvc-maven-master/*  cloud/
...y允许覆盖...

[root@gitlab ~]#git  add  .
[root@gitlab ~]#git commit -m "xingdian"
[root@gitlab ~]#git push -u origin main

返回到远程仓库可以看到更新的代码文件如下
在这里插入图片描述

5,如果使用自建的私有的ssl证书,需要在jenkins上做一下操作
[root@jenkins ~]#git config  --global user.email "chen13665026727@163.com"
[root@jenkins ~]#git config  --global user.name "chenshuai"
[root@jenkins ~]#git config  --global   http.sslVerify  false
6,清理web服务器实验一留下的环境,为实验二环境做准备
web服务器IP:192.168.222.132
[root@web ~]#rm  -rf   /data/application/tomcat/webapps/*
[root@web ~]#rm -rf   /data/backup    删除备份的目录
[root@web ~]#rm -rf   /data/update    删除更新的目录
[root@web ~]#/data/application/tomcat/bin/shutdown.sh   关闭tomcat
7,来到jenkins网页中(http://192.168.222.129:8080/jenkins)
新建tem–输入项目名称:cloud–构建一个maven项目

image-20220517204142996
在这里插入图片描述

常规–丢弃旧版本–保持构建的天数1–保持构建的最大个数5

image-20220517204709254

源码管理–git–仓库地址(https://www.haha.com/plat-sp/cloud.git)–指定分支(*/main)

image-20220517205405030

构建触发器

在这里插入图片描述

构建环境

image-20220517210233958

构建Build(注意pom.xml和clean package)

image-20220517210406193

配置到此就完毕了!!!

8,需要给jenkins服务器同步做gitlab的域名解析
[root@jenkins ~]# vim /etc/hosts    在行尾添加域名解析
192.168.222.128  www.haha.com      
9,在jenkins(http://192.168.222.129:8080/jenkins/)上进行项目构建

image-20220517211355996

image-20220517211516959

10,浏览器查看web服务器http://192.168.222.132:8080/easy-springmvc-maven/

image-20220517211940641

这个显示表示项目可以访问成功,实验二到此结束!!!

三,gitlab++jenkins+web(tomcat)+webbook自动发布(实验二的升级)

1,jenkins安装Generic Webhook Trigger插件

image-20220517214639023

2,找到cloud项目配置–构建触发器(webhook URL: http://192.168.222.129:8080/jenkins/project/cloud )

在这里插入图片描述

3,实验三是基于实验二的(新增加的是一个插件webhook和修改构建触发器)

4,进入gitlab(https://www.haha.com/plat-sp/cloud)

cloud–设置–webhook–填写网址( http://192.168.222.129:8080/jenkins/project/cloud)–勾选推送事件–勾选发布时间–保存修改

image-20220517215958213

image-20220517220527583
image-20220517220615426

image-20220517220642574

image-20220517220754946

4,回到jenkins(http://192.168.222.129:8080/jenkins)

在这里插入图片描述

5,常见错误解决方案

问题一:jenkins配置gitlab的webhook,完成配置,测试结果显示 Hook executed successfully but returned HTTP 403

解决:设置匿名用户拥有可读权限Manage jenkins->Security->Configure Global Security
在这里插入图片描述
在这里插入图片描述

去掉Gitlab enable authentication 对勾

系统管理 -> 系统设置 -> 去掉对勾Enable authentication for ‘/project’ end-point

6,自动化更新构建演示

1,gitlab更新代码
在这里插入图片描述
在这里插入图片描述
注意:看到上图结果说明自动化成功。

架构图总结

在这里插入图片描述

Logo

更多推荐