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

实验一:github+jenkins+web(tomcat)

构建的时候 网络连接超时(正常现象) githud仓库地址1.安装对应的插件(jenkins) Deploy to containerGit (插件比较多)Maven IntegrationPublish 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 plugin2,发布插件:Deploy to container (支持自动化代码部署到tomcat容器)3,插件:含Git的所有插件4,jenkins利用Maven编译,打包所需插件:Maven Integration5,通过ssh连接:Publish Over SSH

2,安装过程

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

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

3,系统配置

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

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

4,创建发布任务



构建触发器

调用maven命令

其他不做修改,最后保存

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/profileJAVA_HOME=/usr/local/javaPATH=$JAVA_HOME/bin:$PATHexport 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 variablesexport 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 ];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@java-server ~]# chmod +x app-jenkins.sh  #添加执行权限

7,回到jenkins页面上开始构建任务

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

界面访问成功

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

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

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

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

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

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

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 = chenshuaiemail = chen13665026727@163.com
4,取消gitlab中cloud的仓库main分支的保护(能够向main这个分支提交代码)

在cloud仓库下–>设置–>仓库–>受保护的分支(取消)

[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项目


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

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

构建触发器

构建环境

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

配置到此就完毕了!!!

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

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

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

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

1,jenkins安装Generic Webhook Trigger插件

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)–勾选推送事件–勾选发布时间–保存修改


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更新代码


注意:看到上图结果说明自动化成功。

架构图总结

专题篇四:Linux企业级CICD持续集成交付发布(终极实战部署:gitlab++jenkins+web(tomcat)+webbook自动发布)相关推荐

  1. Linux中级实战部署一:企业级 CICD 持续集成交付发布---(git,github,gitlab)

    企业级 CI/CD 持续集成/交付/发布 一:git,github,gitlab的区别 Git是版本控制系统:Github是在线的基于Git的代码托管服务,GitHub同时提供付费账户和免费账户:Gi ...

  2. 持续集成之 Spring Boot 实战篇

    本文作者: CODING 用户 - 何健 这次实战篇,我们借助「CODING 持续集成」,实现一个简单的 Spring Boot 项目从编码到最后部署的完整过程.本教程还有 B 站视频版,帮助读者更好 ...

  3. 基于kubernetes平台的CICD持续集成

    基于kubernetes平台的CICD持续集成 文章目录 文章目录 基于kubernetes平台的CICD持续集成 文章目录 1.基于k8s集群的Jenkins持续集成 2.将Jenkins部署在k8 ...

  4. 夕阳桥断 Linux(centos6.5)下安装jenkins Jenkins 的前身是 Hudson 是一个可扩展的持续集成引擎。 通俗的来讲,jenkins就是一个可以实现自动化部署的一个插

    夕阳桥断 Linux(centos6.5)下安装jenkins Jenkins 的前身是 Hudson 是一个可扩展的持续集成引擎. 通俗的来讲,jenkins就是一个可以实现自动化部署的一个插件, ...

  5. 【K8S】基于Docker+K8S+GitLab/SVN+Jenkins+Harbor搭建持续集成交付环境(环境搭建篇)

    写在前面 最近在 K8S 1.18.2 版本的集群上搭建DevOps环境,期间遇到了各种坑.目前,搭建环境的过程中出现的各种坑均已被填平,特此记录,并分享给大家! 服务器规划 IP 主机名 节点 操作 ...

  6. Android 持续集成实践(二)——配置 Docker + gitlab-runner 实现线上自动编译

    文章目录 前言 系列文章 Android 持续集成实践(二)--配置 Docker + gitlab-runner 实现线上自动编译 安装 Docker 安装 gitlab-runner 安装 注册 ...

  7. ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(三

    在上文ASP.NET Core应用程序容器化.持续集成与Kubernetes集群部署(二)中,我介绍了如何使用Azure DevOps为ASP.NET Core应用程序案例:tasklist搭建持续集 ...

  8. 敏捷开发,持续集成/交付/部署, DevOps总结

    文章目录 敏捷开发入门教程 一.迭代开发 二.增量开发 三.敏捷开发的好处 3.1 早期交付 3.2 降低风险 四.如何进行每一次迭代 五.敏捷开发的价值观 六.十二条原则 七.参考链接 持续集成/交 ...

  9. ASP.NET Core应用程序容器化、持续集成与Kubernetes集群部署(二)

    在上文中我介绍了ASP.NET Core应用程序容器化时需要注意的几个问题,并给出了一个案例应用程序:tasklist.今天接着上文的内容,继续了解一下如何使用Azure DevOps进行ASP.NE ...

最新文章

  1. asp自定义函数可以返回数组或者对象
  2. Meet new Sentinel Go committers!
  3. jQuery基础(未完待续)
  4. 选择结构_穿透的switch语句
  5. python matlib库_python matplotlib 库学习
  6. MySQL 基础 ———— 连接查询
  7. kbengine 的 nginx反向代理https/wss 配置 支持kbe负载均衡
  8. script和scriptreplay命令实现终端录制和回放。
  9. 漫步数理统计四——概率集合函数(下)
  10. 杀掉php所有进程,杀死某个用户的所有进程
  11. 【数据结构与算法】完结
  12. 使用 Redis 实现一个轻量级的搜索引擎,牛x啊 !
  13. 基于单片机24V直流无刷电机电动车控制器设计
  14. Docker傻瓜式安装到使用
  15. 流浪者(rover)
  16. C语言中的绝对值函数
  17. 数据结构课设:基于字符串模式匹配算法的病毒感染检测问题
  18. mysql结果作为另一次查询_MySql中一次查询结果用作二次查询条件
  19. 如何下载linux内核头文件,在Linux系统上安装Linux内核头文件的教程
  20. 程序员笔记软件cherrytree推荐

热门文章

  1. java 接口超时控制_Java接口请求响应超时的解决办法
  2. mediawiki和semantic mediawiki的一些东西
  3. 手写Spring-第五章-解放双手!自动化配置!
  4. keygen文件被小红伞自动删除的解决办法
  5. Cdiscount的订单管理ERP怎么选择?无忧易售ERP已与Cdiscount达成合作,完成对接
  6. 猿创征文|对象比较“==”与“hashCode()”的孽缘(java 小虚竹)
  7. 嘿,兄弟!移动端调试工具Flipper了解一下(下)
  8. 未来十年智慧城市如何发展?百度智慧城市有话说
  9. springboot读取资源文件配置(一)
  10. 【教程】如何在txt文本中提取重复和不重复的手机号码,两个文件两组号码两批手机号对比重复不重复,一键复制和导出