第七章:敏捷开发工具方法-part2-CI/CD工具介绍

news2024/10/6 8:30:02

文章目录

  • 前言
  • 一、CI-持续集成
    • 1.1 安装部署gitlab
  • 二、gitlab CI配置
  • 三、jenkins实现CI / CD
    • 3.1 安装jenkins
    • 3.2 配置CI
    • 3.3 配置CD
    • 3.4 其他构建方式
      • 1、定时构建
      • 2、指定参数构建
      • 3、webhook自动根据git事件进行构建

前言

什么是CI/Cd?

CI-Continuous integration持续集成是指多名开发者在开发不同功能代码的过程当中,可以频繁的将代吗行合并到一起并切相互不影响工作。
CD-continuous deployment持续部署是基于某种工具或平台实现代码自动化的构建、测试和部署到线上环境以实现交付高质量的产品,持续部署在某种程度上代表了一个开发团队的更新迭代速率。
Continuous Delivery: 持续交付是在持续部署的基础之上,将产品交付到线上环境,因此持续交付是产品价值的一种交付,是产品价值的一种盈利的实现。

  • 持续交付并不是指软件每一个改动都要尽快的部署到产品环境中。它指的是任何的修改都已证明可以在任何时候实施部署。 持续
  • 交付(Continuous Delivery)是一系列的开发实践方法,用来确保让代码能够快速安全的部署到产品环境中,它通过将每一次改动都提交到一个模拟产品环境中,使用严格的自动化测试,确保业务应用和服务能符合预期。因为使用完全的自动化过程来把每个变更自动的提交到测试环境中,所以当业务开发完成时,你有信心只需要按一次按钮就能将应用安全的部署到产品环境中。

特点:

  • 通常将侧重研发侧的过程称为CI(持续集成),侧重正式环境部署的过程称为CD(持续交付)
  • 一般不单独提持续部署(ContinuousDeployment)
    在这里插入图片描述

主要工具:

  • 代码仓库:Git进行管理;静态检查;Sonar集成
  • 单元测试:Junit;单测覆盖率
  • JaCoCo插件;编译打包;
  • 集成部署: she11脚本/服务接口;
  • 自动化测试:RobotFrameWork,
  • 自动化测试平台;CI报告;Sonar。
  • Gitlab+Jenkins+SonarQube+阿里EDAS平台+RF自动化测试套件等.

在这里插入图片描述

一、CI-持续集成

Martin Flowler对持续集成是这样定义的:持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建 (包括编译,部署,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。

常用工具:

  • 代码管理:gitlab(企业自建),gitee(企业租户形式使用)
  • 持续集成:jenkins

1.1 安装部署gitlab

  • 官网:官网,中文官网
  • 注意:建议安装的gitlab在虚拟机中至少给到2G以上内存,不然可能会安装不成功,卡在某个地方报错
    在这里插入图片描述
    1、下载镜像
    由于官网镜像太慢,所以在国内开源镜像站中查找。如:清华大学开源软件镜像站
  • 搜索gitlab镜像(目前使用社区版),下载最新。镜像列表地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
    在这里插入图片描述

2、登录服务器,下载镜像

# 下载
wget https://mirrors.tuna.tsingua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-14.9.4-ce..el7.x864.rpm
# 安装邮件服务postfix(gitlab依赖)
yum install postfix
# 启动邮件服务
systemctl start postfix
# 安装gitlab
rpm -ivh gitlab-ce-14.9.4-ce.0.el7.x86_64.rpm

3、安装完成后,根据提示设置访问地址
在这里插入图片描述

# 修改添加gitlab的访问地址
vim /etc/gitlab/gitlab.rb
# 进入gitlab.rb编辑内容中后-----
external_url 'http://192.168.xx.xx:8000'
# :wq 保存并退出编辑----- ip试自身环境定
# 开放端口号
firewall-cmd --permanent --zone=public --add-port=8000/tcp
# 重启防火墙
firewall-cmd --reload
# 查看当前开放端口
firewall-cmd --list-ports
# 重置gitla
gitlab-ctl reconfigure
# 重启gitlab服务
gitlab-ctl restart

4、重启完成后,根据external_url访问gitlab

  • 当遇到502时,可以尝试多刷新几次
  • 如果一直无法访问,就通过gitlab-ctl status查看运行状态
  • 登录默认为root,初始密码默认在/etc/gitlab/initial_root_password中查看,登录gitlab后自定设置
    在这里插入图片描述

在这里插入图片描述

二、gitlab CI配置

本节假设已建立一个vue3-vite项目的仓库,并在项目根目录新建.gitlab-ci.yml

  • gitlab-ci配置的保留字:image(使用docker image),services(使用docker service),stages(定义工作阶段),types(stage的别名),before_script(在工作任务执行前执行的脚本命令),after_script(在任务执行结束后执行的脚本命令),variables(定义变量)
  • 配置文件示例
# stages:是保留字,用于定义工程执行的阶段
stages:
    - build
    - deploy
# build_job: job名称,可以自定义    
build_job:
    stage: build
    script: 
    	- 'echo "start build"'
    	- 'echo "多行输出"'
    
deploy_job:
    stage: deploy
    script: 'echo "start deploy"'
  • 以上只是简单的gitlab-ci配置,而要构建gitlab流水线,需要搭配使用runner,runner的安装一般由管理员部署实现,这里略过了。

三、jenkins实现CI / CD

官网地址, jenkins中文网

在这里插入图片描述

3.1 安装jenkins

以centos系统安装为例,官网参考:https://pkg.jenkins.io/redhat-stable/

  • 注意:jenkins依赖于java,所以需要先安装java jdk
  • 根据官网文档要求,在对应服务器上下载java及jinkins安装包
    在这里插入图片描述
# 安装(已下载jenkins-2.332.3-1.1.noarch.rpm安装包
rpm -ivh jenkins-2.332.3-1.1.noarch.rpm
# 查看jenkins配置文件
vim /etc/init.d/jenkins
# 修改配置(端口或USER,视情况定)
vim /etc/sysconfig/jenkins
# 启动jenkins(首次启动较慢,可能需要四五分钟)
service jenkins start
# 获取初始密码
tail /var/lib/jenkins/secrets/initialAdminPassword

解锁jenkins获取初始密码
在这里插入图片描述

  • 首次启动会推荐安装插件,但安装会耗时很久,所以建议不安装推荐插件,点击“选择插件来安装”后,不勾选插件从而进入下一步。
    在这里插入图片描述
    在这里插入图片描述

  • 创建管理员用户
    在这里插入图片描述

  • 配置实例(默认不改就好)
    在这里插入图片描述

进入系统后,显示欢迎页:
在这里插入图片描述

  • 添加中文插件(Manage Jenkins左侧菜单——》Manage Plugins——》available标签页)
    在这里插入图片描述

3.2 配置CI

1、创建新任务并命名
在这里插入图片描述
2、关联gitlab仓库
此处需要先安装git插件
在这里插入图片描述
在jenkins安装对应服务器上安装git

# 安装
yum install -y git
# 测试安装是否完成
git --version
  • 配置源码管理
    在这里插入图片描述
  • 添加凭据,向下选择是否切换分支
    在这里插入图片描述
  • 点击构建,测试是否成功
    在这里插入图片描述

/var/lib/jenkins/workspace是jenkins的默认工作目录,在里面可以看到上一步构建拉取到的项目文件

  • 新增构建步骤(进入上一步新建任务的配置中)
    在这里插入图片描述
  • 配置shell

3.3 配置CD

1、基于上一步的执行shell脚本中,继续添加shell

cd /var/lib/jenkins/workspace/DemoTest
# 安装依赖
npm install
# 打包
npm run build
# 进入打包后目录
cd dist
# 压缩前先删除已有压缩包
rm -f demotest.tar.gz
# 压缩所有文件
tar -zcvf demotest.tar.gz *
# 查看dist目录
ll

在这里插入图片描述
2、将上一步的压缩包,传到nginx服务器
- 先安装 publish over ssh插件(用于推送压缩包)
在这里插入图片描述

  • 配置Publish Over ssh (对应nginx服务根目录)
    在这里插入图片描述
    在这里插入图片描述
  • 添加构建后操作
    在这里插入图片描述
  • 添加构建后操作配置(注意:对应nginx服务器上已创建demotest文件夹的前提下,且配置了nginx对demotest路径的配置)
    在这里插入图片描述

3.4 其他构建方式

1、定时构建

1、打开demotest任务的配置,切到构建触发器
在这里插入图片描述

2、指定参数构建

1、安装git parameter插件
在这里插入图片描述
2、修改任务配置——勾选“参数化构建过程”
在这里插入图片描述
3、添加Git参数配置
在这里插入图片描述
4、修改“源码管理”处的指定分支
在这里插入图片描述
5、查看可用构建的标签和分支(选中后,点击开始构建即可)
在这里插入图片描述

3、webhook自动根据git事件进行构建

1、添加插件
在这里插入图片描述
在这里插入图片描述

2、打开demotest配置(在安装gitlab插件后,会新增一个构建触发器选项如下)
添加gitlab插件后,会多一条选项
3、到gitlab中配置出站请求(gitlab群组管理中设置)
设置——》网络——》出站请求
在这里插入图片描述
4、设置webhooks(对应代码仓库中设置)
在这里插入图片描述
5、测试push event
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/977346.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

web前端——简单的网页布局案列

✨博主:命运之光 🌸专栏:Python星辰秘典 🐳专栏:web开发(简单好用又好看) ❤️专栏:Java经典程序设计 ☀️博主的其他文章:点击进入博主的主页 目录 问题背景 解决样例 …

[Vue3 博物馆管理系统] 使用Vue3、Element-plus tabs组件构建选项卡功能

系列文章目录 第一章 定制上中下(顶部菜单、底部区域、中间主区域显示)三层结构首页 第二章 使用Vue3、Element-plus菜单组件构建菜单 第三章 使用Vue3、Element-plus走马灯组件构建轮播图 第四章 使用Vue3、Element-plus tabs组件构建选项卡功能 [第五…

Tomcat多实例和负载均衡动静分离

一、Tomcat多实例部署 安装jdk 设置jdk环境变量 安装tomcat 配置Tomcat环境变量 修改端口号 修改tomcat中startup.sh和shutdown.sh文件添加tomcat环境变量 启动Tomcat中的startup.sh 浏览器测试 http://192.168.30.100:8080 http://192.168.30.100:8081 二、负载均衡动静分离…

GPT 内部 — I : 了解文本生成

年轻的陀思妥耶夫斯基被介绍给生成AI,通过Midjourney创建 一、说明 我经常与不同领域的同事互动,我喜欢向几乎没有数据科学背景的人传达机器学习概念的挑战。在这里,我试图用简单的术语解释 GPT 是如何连接的,只是这次是书面形式。…

Elasticsearch:使用 ESRE 和生成式 AI 了解 TLS 日志错误

作者:DAVID HOPE 本博客介绍了 Elasticsearch 相关性引擎 (ESRE​​) 及其 Elastic Learned Sparse Encoder 功能的新颖应用,特别是在日志分析中。 最近发布的 Elasticsearch Relevance Engine™ (ESRE™) 包含一系列重要功能,可增强搜索能力…

2023移动软件开发实验5

2023年夏季《移动软件开发》实验报告 姓名和学号?本实验属于哪门课程?中国海洋大学23夏《移动软件开发》实验名称?实验5:高校新闻网博客地址?XXXXXXXGithub仓库地址?https://github.com/enfantsRichesDepr…

深入理解联邦学习——联邦学习的定义

分类目录:《深入理解联邦学习》总目录 假设有两个不同的企业 A A A和 B B B,它们拥有不同的数据。比如,企业 A A A有用户特征数据,而企业 B B B有产品特征数据和标注数据。这两个企业按照GDPR准则是不能粗暴地把双方数据加以合并的…

【C++】函数重载 ① ( 函数重载概念 | 函数重载判断标准 - 参数个数 / 类型 / 顺序 | 返回值不是函数重载判定标准 )

文章目录 一、函数重载1、函数重载概念2、函数重载判断标准 二、代码示例1、代码示例 - 函数重载2、代码示例 - 返回值不是函数重载判定标准 博客总结 : 重载函数 : 使用 相同 的 函数名 , 定义 不同 的 函数参数列表 ;判定标准 : 只有 函数参数 的 个数 / 类型 / 顺序 的不同…

Pandas常用指令

astype astype的作用是转换数据类型,astype是没办法直接在原df上进行修改的,只能通过赋值的形式将原有的df进行覆盖,即df df.astype(dtype) astype的基本语法 DataFrame.astype(dtype, copyTrue, errorsraise) dtype参数指定将数据类型转换…

Pytorch从零开始实战01

Pytorch从零开始实战——MNIST手写数字识别 文章目录 Pytorch从零开始实战——MNIST手写数字识别环境准备数据集模型选择模型训练可视化展示 环境准备 本系列基于Jupyter notebook,使用Python3.7.12,Pytorch1.7.0cu110,torchvision0.8.0&…

Python综合案例(动态柱状图)

一、基础柱状图 基本代码: """ 演示基础柱状图的开发 """ from pyecharts.charts import Bar from pyecharts.options import LabelOpts # 使用Bar构建基础柱状图 bar Bar() # 添加x轴的数据 bar.add_xaxis(["中国", &q…

谷歌浏览器打开白屏 后台还有还有很多google chrome进程在运行

环境: Win10 专业版 谷歌浏览器 版本 116.0.5845.141(正式版本) (64 位) L盾加密终端 问题描述: 谷歌浏览器打开白屏 后台还有还有很多google chrome进程在运行,要全部结束谷歌浏览器进程&…

pear admin 新增模块流程

pear admin 新增模块流程 一、界面新增模块二、增加路由情况三、增加前端页面四、增加db Module配置 一、界面新增模块 增加主菜单 增加子菜单 对应底层表:rt_power 二、增加路由情况 增加路由代码 from flask import render_template from common.utils.righ…

如何实现24/7客户服务自动化?

传统的客服制胜与否的法宝在于人,互联网时代,对于产品线广的大型企业来说:单靠人力,成本大且效率低,相对于产品相对单一的中小型企业来说:建设传统客服系统的成本难以承受,企业客户服务的转型已…

计算机网络初识

目录 1、计算机网络背景 网络发展 认识 "协议" 2、网络协议初识 OSI七层模型 TCP/IP五层(或四层)模型 3、网络传输基本流程 网络传输流程图 数据包封装和分用 4、网络中的地址管理 认识IP地址 认识MAC地址 1、计算机网络背景 网络发展 在之前呢&…

尼康D90使用心得

文章目录 规格参数快速指南相机机身模式拨盘控制面板取景器拍摄信息展示 核心功能指令拨盘拍摄模式自动模式场景模式快门速度和光圈 固件、软件、驱动升级更多细节参考 规格参数 型号尼康D90发布日期2008年08月机身特性APS-C规格数码单反产品定位中端单反传感器类型CMOS传感器…

Redis Redis的数据结构 - 通用命令 - String类型命令 - Hash类型命令

目录 Redis的数据结构: Redis命令: 通用命令:(通用指令是部分数据类型的,都可以使用的指令) KEYS查询命令: DEL删除命令: EXISTS判断命令: EXPIPE有效期设置命令&…

Ubuntu系统安装JDK1.8(附网盘链接)

这里写目录标题 1.下载JDK:2.将压缩包上传至服务器:3.安装JDK:4.配置环境变量:5.配置生效:6.检查JDK版本: 1.下载JDK: 方式一:[官网链接](https://www.oracle.com/java/technologie…

vue3+vant4封装日期时间组件(年月日时分秒)

vant4目前无法直接使用vant3自带的年月日时分秒组件&#xff0c;综合考虑下&#xff0c;决定自己封装一个&#xff01; vue3vant4封装日期时间组件&#xff08;年月日时分秒&#xff09; 效果图代码片段核心组件代码引入 效果图 代码片段 核心组件代码 <template><!…

软件评测师之码制

目录 一、机器数二、码制三、数的表示范围 一、机器数 机器数就是一个数在计算机中的二进制表示&#xff0c;计算机中机器数的最高位是符号位&#xff0c;正数符号位为0&#xff0c;负数符号位为1&#xff0c;机器数包含原码、反码和补码三种表示形式。 二、码制 表现形式数…