一、什么是持续集成
测试代码、开发代码、测试报告、发送邮件...组合到一起来 --- 流水线。 (有一个规范的流程)
持续集成(Continuous Integration,简称CI) 是一种软件开发实践,旨在将代码集成到共享仓库中,并频繁地自动执行构建和测试。这种方法允许团队更早地发现并定位问题,从而确保软件质量。
类似于行云流水线
持续集成通常涉及以下关键步骤:
代码提交:开发人员将他们的代码更改提交到共享的代码仓库(如Git)。
自动构建:每当有新的代码提交时,自动化工具(如Jenkins、Travis CI等)会触发构建过程,从代码仓库中拉取最新的代码,并执行编译、链接等操作。
自动化测试:构建成功后,自动化测试会执行,包括单元测试、集成测试、功能测试等,以确保代码更改没有引入新的问题。
反馈:测试结果会及时反馈给开发人员,以便他们了解更改是否通过了测试,或者需要修复哪些问题。
持续集成的好处包括:
更早发现问题:由于每次代码更改都会触发构建和测试,所以问题可以在早期阶段就被发现,从而减少了修复成本。
提高代码质量:频繁的测试和反馈可以确保代码质量始终保持在较高水平。
促进团队协作:通过共享的代码仓库和自动化的构建/测试过程,团队成员可以更好地协作,确保他们的更改不会破坏其他人的工作。
加快开发速度:由于问题可以更早地被发现和修复,所以开发速度通常会更快。
总之,持续集成是一种重要的软件开发实践,它可以帮助团队提高代码质量、促进协作,并加快开发速度。
二、版本控制概念与环境搭建
1、版本管理
1)版本管理的区别
本地:线下进行版本的管理,问题: 不能同步、资料的丢失
云:线上进行版本管理 -- 线上多人维护操作、避免了资料的丢失的可能性
对代码的线上管理,则是把代码上传到公共的平台 (托管平台)--在线代码仓库
2、代码版本管理工具和平台
Git结合Gittee进行基本设置【重要】
Git是一款分布式源代码管理工具(版本控制工具) ,一个协同(大家一起做一件事情)的工具。
1、工具:
- Git -- 一般通过命令方式去进行执行 (必须掌握常见的命令)
- 在线仓库:比如说:Gitee、GitHub、GitLab、Gogs等等(四个平台都是基于Git的,操作几基本一致,只是中间两个是国外的,访问可能有问题,所以只学两个红色的)
2、平台
网址:Gitee - 基于 Git 的代码托管和研发协作平台
总结: 通过Git 命令上传代码到在线仓库; 通过Git 命令拉取代码到本地仓库
代码仓库可以理解成是一个文件夹
3、安装
安装包下载官网:https://git-scm.com/download/win
windows: 双击.exe安装包,一路next傻瓜式安装,即可。最后确认一下安装成功即可
mac: 需要用命令去按安装。讲解在01课44分钟左右
安装包下载官网:https://git-scm.com/download/win
运行这个命令去安装
4、配置当前用户信息
执行这2个命令即可:
git config --global user.name "用户名"
git config --global user.email "邮箱"
配置完成后,查看配置
git config --list
如图
上面的配置实际是在这个文件
5、仓库的创建
仓库是否有内容分为:空仓库 和 非空仓库 区分 ;第一步操作会有一些小区别。
6、拉取代码
1、非空仓库
1.1)切到保存的路径
1.1.1)方式一:可以在cmd通过命令切换到这个路径
先cd 路径,回车。 再直接D:
1.1.2)方式二:可以直接在所在路径,输入cmd
回车后会直接在cmd打开这个路径位置
1.1.3)方式三:git.bash(安装Git自带的)
1.2)拉取代码
命令:
git clone 地址(https/ssh) --- 自动建立远程连接
1.2.1)https方式拉取
命令:
git clone https://gitee.com/****8*.git
https需要生成令牌,每次拉取要输入令牌
1.2.1.1)git.bash下载成功
1.2.1.2)或者在cmd下载成功
拉取成功
上面两种方式任一即可,再查看本地路径,已经拉取下来了
1.2.2)ssh方式拉取
命令:
git clone git@gitee.com:****.git
1.2.2.1)生成公钥:
1. 在cmd 中输入: ssh-keygen -t ed25519 -C "邮箱地址" ,邮箱随意最好是gitee邮箱地址。
ssh-keygen -t ed25519 -C "邮箱地址"
2. 三次回车:直接回车即可。不要输密码,否则后面每次拉取都需要输密码
自己:生成的公钥,其实不是实际的公钥。公钥还是得在存储的那个文件里才能获取到
3. 配置:需要到Gitee配置SSH公钥
4. 正常拉取即可
7、提交代码
1、空仓库
自己从0 到1 的仓库怎么去进行代码的维护。(提交代码)
(一定要让空仓库变成非空仓库)
1.1)方式一:点击初始化的按钮进行操作
1.2)方式二:完全执行命令的方式
Git整体流转的原理
Git常用命令使用【重要】
1、mkdir testapi01 # 创建文件夹
2、cd testapi01 # 进入到文件夹
3、git init # 初始化命令
执行完会提示:
Initialized empty Git repository in F:/ProjectHcEdu/cicdclass/testapi01/.git/
提示是告知,自动生成了一个.git的隐藏文件
4、touch README.md # 开始新建文件/或移动自己的本地代码文件到这个文件夹
(这个命令,cmd是执行不了的)
# 提交代码的命令:
1. 提交文件:
确定你要提交文件,单个文件则写对应的文件名,多个文件那么git add .
git add README.md (提交单个文件)
git add . (提交多个文件,就.就完事了,没其他)
2. 提交文件的说明:
将暂存区中的更改说明 提交到版本历史记录, 这样可以通过git log 查看提交信息
git commit -m "first commit"
3. 建立远程连接 (初始化才需要这么做,为什么? 后面这个就是拉取代码库的地址 https/ssh)
git remote add origin git@gitee.com:yulisasyc/testapi01.git
4. 确认进行提交操作
git push -u origin "master"
非空仓库,直接从线上拉取下来的(自己已经建立连接),在这个位置如果你需要提交代码的话,不需要建立远程连接。
空仓库,里面没有远程连接
执行完建立连接的命令,就立马在配置文件建立了连接
最终提交成功后
五. Git解决版本冲突问题【重要】
版本冲突
【绕的很】版本冲突怎么办:两个人同时做了改动。
场景1:修改的是非一个文件
场景2:修改的是同一个文件
场景1:修改的非同一个文件
方法一: git pull 拉取代码 ,从远程获取代码并合并本地的版本。
知道有人有修改时,自己要先拉取一下最新代码,合到本地版本。然后再提交自己的代码,正常提交即可。
方法二:
我不知道对方有更新。我就一次性卡拉提交,这时候就会提示冲突错误信息。
(原来拉取的不能提交了)
解决方案:
1. 新建一个仓库文件夹,把最新的代码拉取下来
2. 然后把你修改的文件放进去 (当修改的文件不是同一个时,直接把自己的文件放进去就可以)
3. 重新提交即可
PS:另外一种解决方式,不推荐()
git reset --hard # 用于重置当前分支的HEAD指针和索引到指定的提交,并删除所有未提交的修改。
git pull # 拉取线上的最新的代码
问题:此方法本地修改的代码会被丢弃,不可找回。
场景2:修改的是同一个文件
版本管理工具也不知道你要保留哪些内容,所以要对应的开发人员去手动进行取舍。
提交时,报错
步骤:
git branch 查看本地的分支 --默认当前分支。
1、创建分支:新建的分支和之前的分支都会默认指向当前分支(master 和 test 都是 自己本地分支)
git branch 新建分支名
2. 把master分支变成:线上的分支 --- 先进行回滚,然后再拉取。
通过git log 查看 commit-id
git reset --hard commit-id --回滚,之前OK的 分支
目前地步:master已经变成了之前ok 和 test 是 自己之前本地分支
怎么看分支的内容? 可以通过切分支看。
切分支:
gti checkout 分支名
把master分支变成线上的代码:
git pull 代码
目前地步:master已经变成了线上的分支 和 test 是 自己之前本地分支
目标:1个分支指定自己的分支,1个是线上的分支 ,最后2个合并。
4. 合并:在master分支执行: git merge test-- (分支名),进行取舍
5. 正常提交即可。