首页 > 其他分享 >CI/CD

CI/CD

时间:2024-09-24 17:15:07浏览次数:7  
标签:CI CD 点击 构建 usr jenkins HOME local

目录

1.什么是CI/CD?

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

(1)CICD 是持续集成和持续交付/部署简称。

指在研发过程中自动执行一系列脚本来降低开发引入bug的概率,在新代码从开发到部署的过程中,尽量减少人工的介入。这一策略加快了代码提交到功能上线的速度,保证新的功能能够第一时间部署到生产环境并被使用。

(2)CI 持续集成

指在开发人员频繁地提交新代码,都会自动执行构建、测试。根据测试结果,我们可以确定新代码能否合并到主分支。
假设现在有个应用的代码存储在仓库上,每天开发人员都会提交很多次新代码,针对每次提交,我们可以创建一系列脚本进行自动测试,降低往应用里引入错误的概率。
持续集成过程中很重视自动化测试验证结果,以保障所有的提交在合并主线之后的质量问题,如果构建或测试的失败,可以快速地反馈到相关负责人,以尽快解决达到一个更稳定的版本。

(3)CD 持续交付

指将完成CI的最新代码部署到类生产环境进行功能验证,以确保新增的代码在生产环境中是可用的。

(4)CD 持续部署

指在持续交付的基础上,通过自动化部署的手段将软件功能频繁的部署到生产环境中。

2.持续集成流程

(1)环境初始化

systemctl disable --now firewalld
setenforce 0
vim /etc/selinux/config
     disabled



修改主机名

hostnamctl set-hostname gitlab
bash

hostnamectl set-hostname jenkins
bash

hostnamectl set-hostname tomcat
bash



(2)安装Gitlab


修改配置文件vim /etc/gitlab/gitlab.rb



访问


修改语言

(1)创建组群

点击页面左上方的【GitLab】图标,点击 【新建群组】
【群组名称】、【群组URL】、【群组描述】都设置成 devops_group
【可见性级别】设置成 私有
其他都保持默认值,点击 【创建群组】

(2)创建项目

点击 【新建项目】
【项目URL】群组选项下拉选择 devops_group
【项目名称】设置成 web_demo
【项目描述】设置成 web_demo
【可见等级】设置成 私有
点击 【创建项目】

(3)创建用户

点击页面上方的【扳手】图标进入“管理区域”
点击 【新建用户】
【姓名】设置成 zhangsan
【用户名】设置成 zhangsan
【电子邮箱】设置成 [email protected]
这里密码暂不设置,其他都保持默认值,先点击 【创建用户】
注:Access level:Regular(表示的是普通用户,只能访问属于他的组和项目);Admin(表示的是管理员,可以访问所有组和项目)
创建好用户后再点击右上角的【Edit】,可在这里设置密码,如 zhangsan@123




(4)将用户添加到组中

点击页面上方的【群组】下拉选择 devops_group
点击左边菜单【成员】
【添加成员到 devops_group】选择 zhangsan,角色权限选择 Owner
点击 【添加到群组】

(5)使用自己创建的账户进行管理

退出当前账户,使用自己创建的账户 zhangsan 登录(zhangsan/zhangsan@123)
第一次登录会被强制要求修改密码(zhangsan/zhangsan@123),可与旧密码相同,再重新登录

(6)源码上传到Gitlab仓库








(3)Jenkins安装

(1)安装JDK

vim /etc/profile
export JAVA_HOME=/usr/local/jdk-17.0.9
export CLASSPATH=.:${JAVA_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH

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

yum install epel-release -y
yum install jenkins -y







替换插件更新源

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





创建第一个管理员用户,如 zhangsan/zhangsan@123

修改语言

Manage Jenkins -> Manage Plugins -> 点击 Availale -> 安装以下几个插件
Localization: Chinese
Git



(2)拉取代码

点击用户名下拉选择凭据 -> Jenkins 全局 -> 添加凭据
类型选择 "Username with password" ,输入 Gitlab 的用户名和密码(zhangsan/zhangsan@123),描述输入 gitlab-auth-password 
点击 "确定"。

创建一个FreeStyle项目:新建Item -> 任务名称(test01) FreeStyle Project -> 确定
源码管理:选择 Git,Repository URL:http://192.168.80.10:82/devops_group/web_demo.git(可从 Gitlab 使用 HTTP 克隆),
Credentials 下拉选择 gitlab-auth-password,点击 保存。



点击 Bulid Now 开始构建,查看控制台输出可以看到构建成功,构建后的包会生成在服务器的 /var/lib/jenkins/workspace/test01 目录中。


(3)Maven 安装和配置

Maven 是一个主要用于 Java 项目的自动化构建工具。Maven 还可以用来构建和管理用 C#、Ruby、Scala 和其他语言开发的项目。

在 Jenkins 服务器上安装 Maven 来编译和打包项目

cd /opt
tar -zxvf apache-maven-3.6.2-bin.tar.gz
mv apache-maven-3.6.2 /usr/local/maven

vim /etc/profile
  export MAVEN_HOME=/usr/local/maven
  export PATH=${MAVEN_HOME}/bin:${JAVA_HOME}/bin:$PATH

source /etc/profile
mvn -v

#修改 Maven 的 settings.xml
mkdir /usr/local/maven/repo		#创建本地仓库目录


vim /usr/local/maven/conf/settings.xml
54 -->		#本地仓库改为 /usr/local/maven/repo
  <localRepository>/usr/local/maven/repo</localRepository>

153 -->		#添加阿里云私服地址
    <mirror>
      <id>alimaven</id>
      <mirrorOf>central</mirrorOf>
      <name>aliyun maven</name>
      <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    </mirror>
  </mirrors>


Manage Jenkins -> Global Tool Configuration 
-> JDK
点击 新增JDK,别名输入 jdk17,取消勾选 Install automatically,JAVA_HOME输入 /usr/local/jdk-17.0.9
点击 新增JDK,别名输入 jdk1.8,取消勾选 Install automatically,JAVA_HOME输入 /usr/local/jdk1.8.0_391
-> Maven
点击 新增Maven,Name输入 maven3,取消勾选 Install automatically,MAVEN_HOME驶入 /usr/local/maven
点击 "应用"和"保存"。


#添加 Jenkins 全局变量,让 Jenkins 能够识别 JDK 和 Maven 环境的命令
Manage Jenkins -> Configure System -> 全局属性,勾选 Environment variables
键值对列表添加:键 JAVA_HOME ,值 /usr/local/jdk1.8.0_391
				键 MAVEN_HOME ,值 /usr/local/maven
				键 PATH+EXTRA ,值 $MAVEN_HOME/bin



测试 Maven 是否配置成功
点击项目 test01 -> 设置 -> 构建 -> 增加构建步骤 -> Execute Shell
输入 mvn clean package		#清空原有的构建元素(插件、依赖包等target文件),再进行打包
点击 保存
再次构建,如果可以把项目打成 war 包,代表 maven 环境配置成功。


(4)Tomcat 安装和配置

vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_391
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:$PATH

source /etc/profile

配置 Tomcat 用户角色权限
默认情况下 Tomcat 是没有配置用户角色权限的
验证方法:可浏览器访问 http://192.168.80.12:8080 ,点击 Managing Tomcat 下的 manager webapp ,发现返回 403 页面。

但是后续 Jenkins 部署项目到 Tomcat 服务器,需要用到 Tomcat 的用户进行远程部署,所以修改 tomcat 以下配置,添加用户及权限

vim /usr/local/tomcat/conf/tomcat-users.xml
43 -->    #添加 tomcat 用户角色权限,指定用户和密码都是 tomcat ,并授予权限
   <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"/>
</tomcat-users>


vim /usr/local/tomcat/webapps/manager/META-INF/context.xml
<!--     #注释掉 Valve 配置
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
-->

/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh







(5)Jenkins 构建 Maven 项目

(1)自由风格项目构建

项目的集成过程:拉取代码 -> 编译 -> 打包 -> 部署

#拉取代码
新建item -> 任务名称(web_demo_freestyle) FreeStyle Project -> 确定
源码管理:选择 Git,Repository URL:[email protected]:devops_group/web_demo.git
Credentials 下拉选择 gitlab-auth-ssh,点击 保存
点击 Build Now,尝试构建项目

#编译打包
配置 —> 构建 -> 添加构建步骤 -> Execute Shell,输入以下命令
echo "开始编译和打包"
mvn clean package
echo "编译和打包结束"
点击 Build Now,尝试构建项目

(2)把项目部署到远程的 Tomcat 里面

1)安装 Deploy to container 插件
Jenkins 本身无法实现远程部署到 Tomcat 的功能,需要安装 Deploy to container 插件实现:
Manage Jenkins -> 管理插件-可选插件 -> 搜索 Deploy to container 插件选中直接安装即可

2)添加构建后操作
配置 —> 构建后操作 -> 增加构建后操作步骤 -> Deploy war/ear to a container
WAR/EAR files 输入 target/*.war
Containers —> Add Container —> Tomcat 9.x Remote -> Credentials,点击添加 -> Jenkins
用户名 输入 tomcat,密码 输入 tomcat,描述 输入 tomcat-auth,点击添加
Credentials 下拉选择 tomcat-auth
Tomcat URL 输入 http://192.168.80.12:8080
点击保存
点击 Build Now,尝试构建项目

3)部署成功后,刷新 http://192.168.80.12:8080/manager/html 页面,可以发现应用程序中多出一个项目,点击新项目进去访问 





标签:CI,CD,点击,构建,usr,jenkins,HOME,local
From: https://www.cnblogs.com/zsy828/p/18428980

相关文章

  • Flink CDC介绍:基于流的数据集成工具
    FlinkCDC是一个基于流的数据集成工具,旨在为用户提供一套功能更加全面的编程接口(API)。该工具使得用户能够以YAML配置文件的形式,优雅地定义其ETL(Extract,Transform,Load)流程,并协助用户自动化生成定制化的Flink算子并且提交Flink作业。FlinkCDC在任务提交过程中......
  • 题解:P5184 [COCI2009-2010#2] PASIJANS
    分析考虑贪心,每次尽量选最小的字符。显然是每次选字典序最小的弹栈。我们要比较的是每个栈的字典序,但是朴素比较是\(O(L)\)的,考虑将它优化到\(O(1)\)。这个时候我们可以先离散化然后套路地将所有串拼一起跑SA。记得在每个串之间加分割符。这样每次比较字典序就变成了\(......
  • 概率分布深度解析:PMF、PDF和CDF的技术指南
    本文将深入探讨概率分布,详细阐述概率质量函数(PMF)、概率密度函数(PDF)和累积分布函数(CDF)这些核心概念,并通过实际示例进行说明。在深入探讨PMF、PDF和CDF之前,有必要先简要介绍两种常用的概率分布:正态分布和均匀分布。正态分布:也称为高斯分布或钟形曲线,正态分布以其均值为中心对称。它......
  • CCIE证书有用吗?CCIE含金量解读!
    思科认证体系中CCIE是专家级别的认证,从认证的难度来说,CCIE不容易到手,那么考到这个证书有没有用呢?接下来就来解读一下这个证书的含金量。一、技术实力象征CCIE证书是对个人网络技术实力的权威认证。要想获得CCIE证书,考生需通过严格的笔试和实验室考试。这些考试涵盖了网络技术的核......
  • kl散度,K近邻估计法(K-Nearest Neighbors, KNN)是一种基本的分类与回归方法,通常用于分类
     K近邻估计法(K-NearestNeighbors,KNN)是一种基本的分类与回归方法,通常用于分类任务。在Python中,你可以使用scikit-learn库来实现KNN算法。下面是一个简单的示例,展示如何使用scikit-learn来实现KNN分类器。首先,确保你已经安装了scikit-learn库。如果没有安装,可以通过运行pipinsta......
  • Python中,你可以使用`scipy.stats`库中的`entropy`函数来计算两个连续变量之间的KL散度
    在Python中,你可以使用`scipy.stats`库中的`entropy`函数来计算两个连续变量之间的KL散度。这个函数计算的是两个概率分布之间的熵,即KL散度。以下是一个使用`scipy`计算KL散度的示例:首先,你需要安装`scipy`库(如果还未安装的话):```bashpipinstallscipy```然后,你可以使用以下代码......
  • COMPSCI 315 Web Server Workload Characterization
    WebServerWorkloadCharacterizationAssignment3and4,COMPSCI315Due:RefertothedeadlineonCanvas;SubmissionviaCanvas1IntroductionInternettrafficmeasurementinvolvescollectingnetworkdatathatcanbeanalyzedforseveralpurposessuchas......
  • 【Unity】CinemachineVirtualCamera:实现第一人称视角控制
    相机视角的控制,利用CinemachineVirtualCamera插件(在packageManager中下载)实现键盘和鼠标控制第一人称视角。WASD前进后退向左向右,QE左右旋转;鼠标滚轮控制远近、俯仰和升降。另外还支持鼠标靠近边缘移动、鼠标拖拽等控制方式。成果展示Scene部分主相机增加CinemachineBrain组......
  • i2c erproom 读取 ——i2cdetect i2cdump i2cget i2cset 使用方法
    i2cdetecti2cdumpi2cgeti2cset使用方法 1.打印使用说明 i2cdetect–help rk3568_r:/#i2cdetect--helpusage:i2cdetect[-ary]BUS[FIRSTLAST]usage:i2cdetect-FBUSusage:i2cdetect-lDetecti2cdevices.-a Alladdresses(0x00-0x7frathert......
  • Cisco Secure Firewall Threat Defense Virtual 7.6.0 发布下载,新增功能概览
    CiscoSecureFirewallThreatDefenseVirtual7.6.0-思科下一代防火墙虚拟设备(FTDv)FirepowerThreatDefense(FTD)SoftwareforESXi&KVM请访问原文链接:https://sysin.org/blog/cisco-firepower-7/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgCiscoSe......