Git学习笔记9

Gitlab中的代码是要部署到生产服务器上。

CI:

Continuous integration 简称CI:

是一种软件开发实践,即开发团队成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化构建(包括编译、发布、自动化测试)来验证,从而尽快地发现集成中的错误。

构建:对代码进行编译、测试。

如果是人做的话,先是git clone,然后进行编译测试。

如果是自动化,那么就需要一台服务器来做。专门的服务器CI Server服务器(jenkins),自动将代码下载下来,自动进行编译、测试,自动结果反馈。

目的:

持续集成的目的不是减少build失败的次数,而是尽早地发现问题,在最短的时间内解决问题,减少风险和浪费。从而让产品开发流程更加敏捷,缩短产品开发周期,在产品上线后,让用户用的更加顺畅。

在没有应用持续集成之前,传统的开发模式是项目一开始就划分模块,每个开发人员分别负责一个模块,等所有的代码都开发完成之后再集成到一起提交给测试人员,随着软件技术团队的发展,软件已经不能简单地通过划分模块的方式来开发,需要项目内部相互协作,划分模块这种传统的模式的弊端也越来越明显。由于很多bug在项目早期的设计、编码阶段就引入,到最后集成测试时才发现问题,开发人员需要花费大量的时间来定位bug,加上软件的复杂性,bug的定位就更难了,甚至出现不得不调整底层架构的情况。这种情况的发生不仅仅对测试进度造成影响,而且会拖长整个项目周期。

持续集成可以有效解决软件开发过程中的许多问题,在集成测试阶段之前就帮助开发人员发现问题,从而可以有效的确保软件质量,减小项目的风险,使软件开发团队从容的面对各种变化。持续集成报告中可以体现目前项目进度,哪部分需要已经实现,哪些代码已经通过自动化测试,代码质量如何,让开发团队和项目组了解项目的真实状况。

快速定位发现软件问题的开发实践。只要有代码更新,那么CI 服务器就自动pull下来,编译然后run下并进行测试。看看代码是否有问题。最终生成集成报告。

持续测试

Continuous Testing,简称CT

持续测试是贯穿着整个软件开发过程,验证程序员提交代码,检验合规性及降低bug,减少最终错误,实现敏捷及精益开发。

目的

  1. 为了降低开发、部署、发布等可能出现的错误

  2. 防止代码出错

  3. 防止功能出错

  4. 防止业务逻辑出错等

持续交付:CD:

持续交付(CD):

持续交付是指软件开发过程,从原始需求到最终产品开发过程中,较短周期内以需求的小颗粒度(小批量)频繁提交的过程,主要是指集成后的代码在类生产环境(测试环境、预发布环境)中测试,并及时反馈的过程。

STAGING:测试环境或者预生产环境。环境版本都要保持一致。分毫不差。配置都要一样的。php7.2 和php7.3的问题,全部都一致。

自动化:系统都要一样的装。系统包都一样的。容器把环境打包。系统排除。

目的

  1. 开发过程的快速迭代,小步快跑,及时纠正偏离主线

  2. 小颗粒度实现,避免颗粒度大,出现问题解决麻烦

  3. 迅速反馈软件功能,避免方向性错误

  4. 团队角色(含客户)协作密切,减少时间浪费

达到这个程度就能理解。

Continuous Deployment,简称CD

基于持续交付的基础上,把功能稳定,符合产品需求的版本有方法地部署至生产环境中。可以看作是持续交付(CD)的最后一环。

代码直接部署上传到Web服务器(生产环境)。

持续发布

Continuous Release,简称CR

发布是周期性或不定期地对项目在部署后,进行整体软件版本的更新,例如,更新新功能或展示页面框架等。

目的

  1. 产品的快速迭代,小步快跑

  2. 适应市场变化

  3. 匹配市场策略

  4. 应对市场风险

这里适应市场变化、市场策略、市场风险,有点产品经理或者项目经理或者老板的决策因素在里面了。

部署和发布的区别:没有什么太大的区别。

发布某个App版本。部署:环境部署。

持续测试

Continuous Testing,简称CT

持续测试是贯穿着整个软件开发过程验证程序员提交代码,检验合规性及降低bug,减少最终错误,实现敏捷及精益开发。

目的

  1. 为了降低开发、部署、发布等可能出现的错误

  2. 防止代码出错

  3. 防止功能出错

  4. 防止业务逻辑出错等

总结:

1)CI 持续集成:是一个快速定位或者发现软件缺陷的开发实践。

2)CD持续交付:把集成的代码交付给测试工程师进行测试,再交付给运维工程师在测试环境进行测试,最终上线到生产环境的一个过程。

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

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

相关文章

动态规划之回文串问题

回文串 1. 回文子串2. 最长回文子串3. 分割回文串 IV4. 分割回文串 II5. 最长回文子序列6. 让字符串成为回⽂串的最⼩插⼊次数 1. 回文子串 1.题目链接:回文子串 2.题目描述: 给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目…

多目标优化算法:基于非支配排序的鱼鹰优化算法(NSOOA)MATLAB

一、鱼鹰优化算法 鱼鹰优化算法(Osprey optimization algorithm,OOA)由Mohammad Dehghani 和 Pavel Trojovsk于2023年提出,其模拟鱼鹰的捕食行为。 Python:鱼鹰优化算法(Osprey optimization algorithm&a…

新版发布 | Cloudpods v3.10.5 和 v3.9.13 正式发布

Cloudpods v3.10.5 本期发布中,ocboot 部署脚本有较多变化,首先支持以非 root 用户执行安装流程,其次响应社区的呼吁,增加了–stack 参数,允许 Allinone 一键安装仅包含私有云(参数为 edge)或云…

ESP8266 WiFi物联网智能插座—项目简介

目录 1、项目背景 2、设备节点功能 3、上位机功能 物联网虽然能够使家居设备和系统实现自动化、智能化管理,但是依然需要依靠更为先进的终端插座作为根本保障,插座是所有家用电器需要使用的电源设备,插座的有序智能管理,对于实…

服务器免密登录设置

例如服务器A想要免密连接服务器B,需要以下2个步骤 步骤1:在服务器A上执行命令ssh-keygen –t rsa,直接回车,会在默认路径/root/.ssh下生成私钥和公钥 步骤2:将服务器A上生成的公钥id_rsa.pub的内容,复制粘…

进程的管理

#include <unistd.h> void _exit(int status); #include <stdlib.h> void _Exit(int status); status参数&#xff1a;是进程退出时的状态信息&#xff0c;父进程在回收子进程资源的时候可以获取到 #include<stdio.h> #include<stdlib.h> #includ…

【C++】搜索二叉树底层实现

目录 一&#xff0c;概念 二&#xff0c;实现分析 1. 插入 &#xff08;1.&#xff09;非递归版本 &#xff08;2.&#xff09;递归版本 2. 打印搜索二叉树 3.查找函数 &#xff08;1.&#xff09;非递归版本 &#xff08;2.&#xff09;递归版本 4. 删除函数&#x…

flex弹性盒模型与阿里图标的使用

华子目录 flex布局flex布局原理flex使用三要素 阿里图标&#xff08;字体&#xff09; flex布局 相关学习网站&#xff1a;http://c.biancheng.net/css3/flex.html 1.flex是当前最主流的布局方式&#xff1a;用它布局起来更方便&#xff0c;取代了浮动的作用。 2.浮动布局有缺…

Redis混合模式持久化原理

前言 前面文章中我们也介绍过Redis的持久化方式有两种&#xff1a;rdb持久化和aof持久化&#xff0c;具体详情可查看之前文章redis持久化。rdb持久化还是aof持久化它们都有各自的缺点。 rdb和aof缺点 rdb持久化&#xff1a;由于是定期对内存数据快照进行持久化&#xff0c;因此…

宝塔重装注意事项

欢迎关注我的公众号&#xff1a;夜说猫&#xff0c;让一个贫穷的程序员不靠打代码也能吃饭~ 前言 宝塔8.0版本&#xff0c;宝塔卸载重装&#xff0c;或者重装Linux系统后重新安装宝塔也适用。 不能上来直接就执行安装宝塔脚本&#xff0c;除非之前没有安装过宝塔。 步骤 1、…

【Mysql主从配置方法---单主从】

Mysql主从 主服务器 创建用户 create user “for_rep”“从服务器IP地址” IDENTIFIED by “123456” 授权 grant replication slave on . to “for_rep”“从服务器IP地址” IDENTIFIED by “123456” 查看用户权限 SHOW GRANTS FOR “for_rep”“从服务器IP地址”; 修改M…

Flutter粒子生成演示

演示&#xff1a; 直接上代码&#xff1a; import dart:math; import dart:ui;import package:flutter/material.dart; import package:kq_flutter_widgets/widgets/chart/ex/extension.dart;class ParticleView extends StatefulWidget {const ParticleView({super.key});ove…

Vue 使用vue-cli构建SPA项目(超详细)

目录 一、什么是vue-cli 二&#xff0c;构建SPA项目 三、 运行SPA项目 前言&#xff1a; 在我们搭建SPA项目时候&#xff0c;我们必须去检查我们是否搭建好NodeJS环境 cmd窗口输入以下指令&#xff1a;去检查 node -v npm -v 一、什么是vue-cli Vue CLI&#xff08;Vu…

Qt/C++音视频开发53-本地摄像头推流/桌面推流/文件推流/监控推流等

一、前言 编写这个推流程序&#xff0c;最开始设计的时候是用视频文件推流&#xff0c;后面陆续增加了监控摄像头推流&#xff08;其实就是rtsp视频流&#xff09;、网络电台和视频推流&#xff08;一般是rtmp或者http开头m3u8结尾的视频流&#xff09;、本地摄像头推流&#…

短视频矩阵系统,短视频矩阵源码技术开发

开发短视频矩阵系统的源码需要以下步骤&#xff1a; 确定系统需求&#xff1a;根据客户的需求&#xff0c;确定系统的功能和特点&#xff0c;例如用户注册登录、视频上传、视频浏览、评论点赞等。 设计系统架构&#xff1a;根据系统需求&#xff0c;设计系统的整体架构&#x…

前端工程师路上的宝藏:不可错过的进阶必读文章!

JavaScript 《javascript高级程序设计》核心知识总结 必要性&#xff1a;⭐️⭐️⭐️⭐️ 难度&#xff1a;⭐️⭐️⭐️⭐️ 谏言&#xff1a;建议初学者先读一两遍红宝石书&#xff08;即JavaScript高级程序设计&#xff09;&#xff0c;犀牛书可以暂时不看&#xff08;…

csp初赛总结 那些年编程走过的坑 初高中信竞常考语法算法点

&#x1f618;个人主页&#xff1a;曲终酣兴晚的小书屋&#x1f496; &#x1f615;作者介绍&#xff1a;一个莽莽撞撞的&#x1f43b; &#x1f496;专栏介绍&#xff1a;日常生活&往事回忆 &#x1f636;‍&#x1f32b;️每日金句&#xff1a;祝大家心有山水不造作&…

typedef function<int (int,int)> func_t;

这段代码是C中用于创建函数类型别名&#xff08;function type alias&#xff09;的语法。让我们来逐步解释它&#xff1a; typedef: typedef 是C中的关键字&#xff0c;用于创建类型别名。它允许你为一个已存在的类型创建一个新的、易于使用的名称。 function: 这部分指定了要…

【Java 基础篇】Java同步代码块解决数据安全

多线程编程是现代应用程序开发中的常见需求&#xff0c;它可以提高程序的性能和响应能力。然而&#xff0c;多线程编程也带来了一个严重的问题&#xff1a;数据安全。在多线程环境下&#xff0c;多个线程同时访问和修改共享的数据可能导致数据不一致或损坏。为了解决这个问题&a…

【打印文件】python实现-附ChatGPT解析

1.题目 打印文件 时间限制: 1s 空间限制: 256MB 限定语言:不限 题目描述: 有5台打印机打印文件,每台打印机有自己的待打印队列。 因为打印的文件内容有轻重缓急之分,所以队列中的文件有1~10不同的优先级,其中数宁越大优先级越高。 打印机会从自己的待打印队列中选择优先级最…