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 "[email protected]"
推送现有文件夹
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"

相关推荐
藥瓿亭2 小时前
K8S认证|CKS题库+答案| 9. 网络策略 NetworkPolicy
linux·运维·docker·云原生·容器·kubernetes·cks
liuzhenghua662 小时前
Python任务调度模型
java·运维·python
黎相思2 小时前
应用层自定义协议与序列化
运维·服务器·网络
测试开发Kevin3 小时前
详解Jenkins Pipeline 中git 命令的使用方法
运维·jenkins
什么半岛铁盒3 小时前
Linux线程与进程关系及底层实现
java·linux·运维
langmeng1104 小时前
使用docker在3台服务器上搭建基于版本redis 6.x的一主两从模式
运维·redis·docker·容器·集群
jllllyuz4 小时前
如何为服务器生成TLS证书
运维·服务器·数据库
简朴-ocean4 小时前
如何删除linux空的文件夹
linux·运维·服务器
leblancAndSherry5 小时前
Gitlab + Jenkins 实现 CICD
linux·运维·docker·kubernetes·gitlab·jenkins
半桔6 小时前
【Linux手册】探秘系统世界:从用户交互到硬件底层的全链路工作之旅
linux·运维·服务器·面试·centos