CI/CD

目录

1.什么是CI/CD?

2.Gitlab仓库部署

3.部署Jenkins

[3.1 使用jenkins拉取代码](#3.1 使用jenkins拉取代码)

[3.2 对代码进行编译、打包](#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

部署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.rpm

cd /etc/gitlab/
vim gitlab.rb
23行 external_url 'http://192.168.9.113:82'
803行 sidekiq['listen_port'] = 82

gitlab-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:$PATH

source /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 -y


cd /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.xml

sed -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.json

systemctl 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:$PATH

source /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"

相关推荐
群联云防护小杜25 分钟前
如何给负载均衡平台做好安全防御
运维·服务器·网络·网络协议·安全·负载均衡
PyAIGCMaster1 小时前
ubuntu装P104驱动
linux·运维·ubuntu
奈何不吃鱼1 小时前
【Linux】ubuntu依赖安装的各种问题汇总
linux·运维·服务器
zzzhpzhpzzz1 小时前
Ubuntu如何查看硬件型号
linux·运维·ubuntu
蜜獾云1 小时前
linux firewalld 命令详解
linux·运维·服务器·网络·windows·网络安全·firewalld
陌北v11 小时前
Docker Compose 配置指南
运维·docker·容器·docker-compose
只会copy的搬运工1 小时前
Jenkins 持续集成部署——Jenkins实战与运维(1)
运维·ci/cd·jenkins
娶不到胡一菲的汪大东2 小时前
Ubuntu概述
linux·运维·ubuntu
阿里嘎多学长2 小时前
docker怎么部署高斯数据库
运维·数据库·docker·容器
Yuan_o_2 小时前
Linux 基本使用和程序部署
java·linux·运维·服务器·数据库·后端