CI/CD

devtools/2024/10/15 18:49:55/

目录

1.什么是CI/CD?

2.Gitlab仓库部署

3.部署Jenkins

3.1 使用jenkins拉取代码

3.2 对代码进行编译、打包

4.部署tomcat服务器


1.什么是CI/CD?

通俗来说就是启动一个服务,能够监听代码变化,然后自动执行打包,发布等流程:

CICD 是持续集成(continuous Integration)和持续部署(continuous peployment)简称。指在研发过程中自动执行一系列脚本来降低开发引入 bug的概率,在新代码从开发到部署的过程中,尽量减少大工的介入。

CICD 核心:持续集成、持续部署、持续交付。

CI:continuous Intearation,表示持续集成
指在向远程仓库 push 代码后,在这次提交合并入主分支前进行一系列测试,构建等流程。

CD:Continuous Delivery,表示持续交付。
指在完成CI后可自动将已验证的代码发布到仓库。

持续交付的目标是拥有一个可随时部署到生产环境的代码库,

CD:Continuous Deployment,表示持续部署。
指在持续集成的基础上更进一步,指将推送指仓库默认分支代码部署到特定环境

通过自动化的构建、测试和部署循环来快速交付高质量的产品。某种程度上代表了一个开发团队工程化的程度,任何修改通过了所有己有的工作流就会直接和客户见面,只有当一个修改在工作流中构建失败才能阻止它部署到产品线

2.Gitlab仓库部署

初始化操作

systemctl disable --now firewalld.service
setenforce 0
vim /etc/selinux/config修改主机名
hostnamectl set-hostname gitlab
hostnamectl set-hostname jenkins
hostnamectl set-hostname tomcat

7-7仓库 20

7-8cicd 30

7-3 tomcat 13

部署gitlab

cd /opt
上传gitlab-ce-12.4.8-ce.0.el7.x86_64.rpm
rpm -ivh gitlab-ce-12.4.8-ce.0.el7.x86_64.rpmcd /etc/gitlab/
vim gitlab.rb
23行 external_url 'http://192.168.9.113:82'
803行 sidekiq['listen_port'] = 82gitlab-ctl reconfigure #重新生成配置
gitlab-ctl restart     #重启

浏览器访问gitlab仓库


创建组群


创建项目

创建用户


用户加入组群


退出使用创建的用户登录

上传代码,仓库服务器

cd /opt
上传web_demo.zip 
unzip web_demo.zip
cd /root/web_demo
#git做全局配置
git config --global user.name "scj"
git config --global user.email "scj@xy101.com"
推送现有文件夹
git init
git remote add origin http://192.168.9.113:82/xy101/web_demo.git
git add .
git commit -m "Initial commit"
git push -u origin master

浏览器查看

3.部署Jenkins

上传jdk-17_linux-x64_bin.tar.gz  jdk-8u391-linux-x64.tar.gz /opt
tar xf jdk-17_linux-x64_bin.tar.gz
tar xf jdk-8u391-linux-x64.tar.gz 
mv jdk-17.0.9/ /usr/local/
mv jdk1.8.0_391/ /usr/local/vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_391
export CLASSPATH=.:${JAVA_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATHsource /etc/profile
java -version

wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo --no-check-certificate
rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
cd /etc/yum.repos.d/
mv local.repo repo.bak/
上传阿里云在线源yum install epel-release -y
yum install jenkins -ycd /usr/lib/systemd/system
vim jenkins.service 
34 User=root
35 Group=root
51 Environment="JAVA_HOME=/usr/local/jdk-17.0.9"systemctl start jenkins.service
systemctl enable jenkins.service
netstat -lntp | grep 80#替换插件更新源
cd /var/lib/jenkins/
sed -i 's#https://updates.jenkins.io/update-center.json#https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json#g' /var/lib/jenkins/hudson.model.UpdateCenter.xmlsed -i 's#https://updates.jenkins.io/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' /var/lib/jenkins/updates/default.json
sed -i 's#https://www.google.com#https://www.baidu.com#g' /var/lib/jenkins/updates/default.jsonsystemctl restart jenkins

浏览器访问jenkins

选择插件安装——点击最上方无——安装

保存并完成——开始使用jenkins

安装中文插件刷新即可


3.1 使用jenkins拉取代码

安装git插件支持账号密码验证,完成后点击最上方Dashboard





新建item后先去gitlab克隆url路径


3.2 对代码进行编译、打包

cd /opt
上传apache-maven-3.6.2-bin.tar.gz 
tar xf apache-maven-3.6.2-bin.tar.gz 
mv apache-maven-3.6.2 /usr/local/maven
cd !$vim /etc/profile
export MAVEN_HOME=/usr/local/maven
export JAVA_HOME=/usr/local/jdk1.8.0_391
export CLASSPATH=.:${JAVA_HOME}/lib
export PATH=${MAVEN_HOME}/bin:${JAVA_HOME}/bin:$PATHsource /etc/profile
mvn -v #查看maven版本mkdir repo
cd conf/
vim settings.xml 
<localRepository>/usr/local/maven/repo</localRepository>   #添加依赖包安装目录159行 <mirror><id>alimaven</id><mirrorOf>central</mirrorOf><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url></mirror>

浏览器进行jenkins配置



设置系统全局变量

使用jenkins调用本地maven对拉去的代码进行打包


4.部署tomcat服务器

cd /opt
上传apache-tomcat-9.0.16.tar.gz
tar xf apache-tomcat-9.0.16.tar.gz
mv apache-tomcat-9.0.16 /usr/local/tomcat
cd /usr/local/tomcat/conf
vim tomcat-users.xml
<role rolename="tomcat"/><role rolename="role1"/><role rolename="manager-script"/><role rolename="manager-gui"/><role rolename="manager-status"/><role rolename="admin-gui"/><role rolename="admin-script"/>   <user username="tomcat" password="tomcat" roles="manager-gui,manager-script,tomcat,admin-gui,admin-script"/>在最后进行添加

cd /usr/local/tomcat/webapps/manager/META-INF
vim context.xml
<!--<Valve className="org.apache.catalina.valves.RemoteAddrValve"allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->
进行注释cd /usr/local/tomcat/bin/
./startup.sh

浏览器访问


部署新的网页应用到tomcat



跟新代码进行测试

gitlab服务器
cd /root/web_demo/src/main/webapp
vim index.jsp 
进行内容添加cd /web_demo
git add .
git commit -m "second commit"


 


http://www.ppmy.cn/devtools/97913.html

相关文章

通过Docker部署Synapse服务器

今天我们在阿贝云免费服务器上进行部署测试。阿贝云免费服务器&#xff0c;简直就是IT界的一颗明星&#xff01;1核CPU、1G内存、10G硬盘、5M带宽&#xff0c;简直就是一个不错的免费服务器选择。 首先&#xff0c;让我们简要介绍一下使用到的Docker和Synapse软件。Docker是一…

某系统存在任意账户凭据窃取漏洞

世人都晓神仙好&#xff0c;惟有功名忘不了&#xff01;古今将相今何在&#xff1f;荒冢一堆草没了。 漏洞描述 某系统存在任意账户凭据窃取漏洞&#xff0c;攻击者使用任意账号登录后访问特殊的Url即可获取所有用户的账号和密码 漏洞复现 登录后台(存在访客用户默认账号密…

美股收涨,半导体板块领涨;苹果iPhone出货预测上调

市场概况 在昨夜的交易中&#xff0c;美股三大股指全线收涨。道琼斯工业平均指数上涨1.39%&#xff0c;纳斯达克综合指数上涨2.34%&#xff0c;标准普尔500指数上涨1.61%。值得注意的是&#xff0c;英伟达股票涨幅近4%&#xff0c;推动了科技股的整体表现。美国十年期国债收益…

无人机航拍与ArcGIS融合实战:从地表观测到空间数据可视化的全方位指南!无人机图像拼接数据处理与分析、可视化与制图

目录 第一章 无人机航拍基本流程、航线规划与飞行实践 第二章 无人机图像拼接软件的学习与操作实践 第三章 无人机图像拼接典型案例详解 第四章 无人机图像拼接数据在GIS中的处理与分析 第五章 无人机图像拼接数据在GIS中的可视化与制图 第六章 综合案例:无人机航拍植被动…

华为HCIP证书好考吗?详解HCIP证书考试难易程度及备考策略!

华为认证体系主要分为三个层次&#xff1a;HCIA(Huawei Certified ICT Associate)&#xff0c;HCIP(Huawei Certified ICT Professional)和HCIE(Huawei Certified Internetwork Expert)。作为中级认证&#xff0c;HCIP证书主要面向具备一定技术基础和项目实践能力的专业人士。在…

React+Vis.js(05):vis.js的节点的点击事件

文章目录 需求实现思路抽屉实现完整代码需求 双击节点,弹出右侧的“抽屉”,显示节点的详细信息 实现思路 vis.network提供了一个doubleClick事件,代码如下: network.on(doubleClick, function (properties) {// console.log(nodes);let id = properties

分布式ID-一窥雪花算法的原生实现问题与解决方案(CosId)

分布式ID-雪花算法的问题与方案&#xff08;CosId&#xff09; 基本原理 外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传](https://img-home.csdnimg.cn/images/20230724024159.png?origin_url%E5%88%86%E5%B8%83%E5%BC%8FID-%E9%9B%AA%E8%8A%B1%E7%AE%9…

使用css如何获取最后一行的元素?使用css解决双边框问题

一、项目场景&#xff1a; 在小程序上需要实现一个如下图的ui效果图 需要满足以下条件 一行放不下 自动换行最后一行或者只有一行时&#xff0c;文字底部不能有线 二、初版实现 按照上面的要求&#xff0c;最开是的实现代码如下 我是给每一个元素都添加了一个下边框&#x…