代码上线之git
1.运维发展过程

2.ci-cd -co
2.1:软件的生命周期
立项 ---->开发---->运维---->消亡
2.2:ci/cd 🌟🌟🌟🌟🌟
● ci cd
● 持续集成
● 持续交付
● 持续部署
2.3 DevOps 🌟v 🌟🌟🌟🌟
● DevOps : 理念让开发人员可以持续集成,运维人员可以持续交付和持续部署.让整个开发过程自动部署,上线...
○ DevOps是一套快速、频繁、可靠的软件交付实践.
○ Development 开发
● Operation 运维
● DevOPS目标是解决 开发书写代码,集成,交付,部署进度,审核缓慢.
● DevOPS实现
○ 开发: git/gitlab/github/gitee(代码平台) sonarqube (运维) appscan(安全检查)
○ 运维: jenkins maven ....插件 ...
● 对运维的理解/DevOps的理解:
○ 理念让开发人员可以持续集成,运维人员可以持续交付和持续部署.让整个开发过程自动部署,上线...
○ DevOps是一套快速、频繁、可靠的软件交付实践.
○ CI 持续集成 git svn/gitlab/gitee/github/
○ CD 持续交付 sonarqube(质量检查 ) appscan (安全检查)
○ CD 持续部署 jenkins docker k8s
● DevSecOps
○ DEV 开发
○ SEC 安全 appscan (安全检查代码应用) nessus(系统和服务漏洞)
○ Ops 运维
2.4 代码部署
● 代码发布/部署--->开发书写的程序代码---->部署测试/生产环境 web服务器(站点目录中
2.5 代码发布方式
| 发布方式 | 效率 | 干扰 | 安全性 |
| 手动发布 | 慢 | 干扰因素很多 | 不安全 |
| 自动发布 | 块 | 干扰因素很少 | 安全 |
1)手动
● 手动发布有如下几种方式
○ 方案一: 拿到代码,开发通过QQ,微信发送代码压缩包,rz上传,解压部署
○ 方案二: 代码上传到web服务器上边
■ scp/rsync 方式上线代码
■ xftp/ftp 方式上线代码
● 方案三:登录代码托管平台 手动执行 git pull .
● 手动上线方案缺点
○ 1.全程运维参与,占用大量时间。
○ 2.如果节点多,上线速度慢。
○ 3.人为失误多,目录管理混乱。。
○ 4.回滚不及时,或者难以回退。
2)自动
前置概念: 持续集成,持续交付,持续部署
● 持续集成git gitlab/gitee/github/.... ci
● 持续交付:cd sonarqube jenkins代码质量检查
● 持续部署:cd jenkins maven ....
常用发布策略: 目标尽量不影响用户使用的前提下,完成测试并完成发布
● 一刀切,整体停止访问进行测试与更新. (网站维护中,更新所有web并测试)
● 蓝绿发布: 把web服务器分为2各部分先更新1组, 然后测试,然后接入负载均衡,再更新另外一组.
● 金丝雀发布(灰度发布) 滚动发布 (分组, 调整权重)
3.持续集成
1.什么是集成?
在说持续集成前,我们先了解下什么是 “集成”。在实际的软件开发中,常常会有如下两种场景:
1.现在有一个电商平台需要开发,由于平台需要开发的某块较多,此时就需要不同的开发人员开发不同的某块,最后将所有人开发好的代码集成到一个系统中。集成完毕后需要对其进行部署上线。
2.随着时间的推移,该系统无论是bug修复、还是新功能开发,后续都需要对系统进行不断的更新迭代。了解了 “集成” 的概念之后,“持续集成” 的概念就好理解了。
2.什么是持续集成?
持续集成指的是,频繁地(一天多次)将代码集成到主干。 (PS: 重复如上集成的工作)
3.使用持续集成带来的好处?
1)快速发现错误。(每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较容易。)
2)节省人力成本。
3)加快软件开发进度。
4)实时交付
4.持续集成的目的?
让产品可以快速迭代,同时还能保持高质量。
它的核心措施是,代码集成到主干之前,先进行自动化测试。只要有一个测试用例失败,就不能集成,当然持续集成并不能完全的消除Bug,而
是让它们非常容易发现和改正。
5.什么情况下需要使用持续集成?
如果项目开发的规模比较小,软件集成不是问题。
但是如果项目很大,需要不断添加新功能,或不断的升级产品、则需要进行反复集成,这个时候就需要用到持续集成来简化我们的工作。
#3.什么是持续交付
持续交付指的是在持续集成的环境基础之上,将代码部署到预生产环境。
持续交付:代码开发->单元测试->合并代码-->测试-->手动-->部署到生产
#4.什么是持续部署
持续部署是持续交付的下一步,指代码在任何时刻都是可部署的,最后将部署到生产环境的过程自动化。
持续部署和持续交付的区别就是最终部署到生产环境是自动化的
持续部署:代码开发->单元测试->合并代码-->测试-->自动-->部署到生产
6.持续集成实施流程
5.1 第一步、提交代码
开发者向代码仓库提交代码。所有后面的步骤都始于本地代码的一次提交( commit ) 。
5.2 第二步、测试(第一轮)
代码仓库对commit操作配置了钩子( hook ),只要提交代码或者合并进主干,就会跑自动化测试。
测试有分
为如下几种:PS:第一轮跑单元测试
单元测试∶针对函数或模块的测试
集成测试∶针对整体产品的某个功能的测试,又称功能测试端对端测试∶从用户界面直达数据库的全链路测试
5.3 第三步、构建
编译也称为构建,指的是将源码转换为可以运行的实际代码,比如安装依赖,配置各种资源(样式表、JS脚本、图片)等等。
5.4 第四步、测试(第二轮)
构建完成,就要进行第二轮全面测试,单元测试和集成测试都会跑,有条件的话,也要做端对端测试。所有测试以自动化为主,少数无法自动化
的测试用例,就要人工跑。
PS∶需要强调的是,新版本的每一个更新点都必须测试到。如果测试的覆盖率不高,进入后面的部署阶段后,很可能会出现严重的问题。
5.5 第五步、部署
通过了第二轮测试,当前代码就是一个可以直接部署的版本oldboy。将这个版本的所有文件打包存档,发到生产服务器。生产服务器将打包文
件,解包成本地的一个目录,再将运行路径的“符号链接”`指向这个目录,然后重新启动应用。这方面的部署工具有Shell、Ansible、
SaltStack。
5.6 第六步、回滚
一旦当前版本发生问题,就要回滚到上一个版本的构建结果。最简单的做法就是修改一下符号链接,指向上一个版本的目录。然后重新启动应用
即可。
6. Git 极速入门
6.1 什么是git
● 分布式版本控制系统
● 分布式: svn vs git
● 版本控制: lidao-论文-v1.docx lidao-论文-v2.docx lidao-论文-v3-最终版.docx lidao-论文-v9.最终不能修改版本.docx ...
● 软件
|
Git
|
SVN | |
|
共同点
|
存放代码,版本控制 | 存放代码,版本控制 |
| 工作模式 | 分布式 | 中心化(权限集中) |
|
使用
|
入门较难,熟练后容易使用,目前使用率高 | 入门比较简单,服务端linux,客户端windows |
|
分支
|
创建和维护分支方便 | 创建和维护分支繁琐 |
6.2 应用场景
1) Win
https://git-scm.com/download/
2) Linux(CentOS/Fedora/Rocky Linux/RHEL)
#C7 yum install -y git #c8 dnf install -y git
3) MacOS
#需要提前安装brew
brew install git
4) Ubuntu/Debian
apt install -y git
7.1单枪匹马游山玩水-开发阶段 🌟🌟🌟
1 #创建项目目录(代码目录) #成为git仓库 2 #配置用户 3 git config 4 git config --global user.name 'oldboy' 5 git config --global user.email '918391635@qq.com' 6 git config --global color.ui true 7 git config --global --list 8 [root@devops-gitlab ~]# cat .gitconfig 9 [user] 10 name = oldboy 11 email = youjiu_linux@qq.com 12 [color] 13 ui = true 14 #创建代码目录 15 mkdir -p /app/src/ 16 cd /app/src/ 17 mkdir lidao-G 18 cd lidao-G/ 19 # 对目录进行初始化 20 [root@devops-gitlab /app/src/lidao-G]# git init 21 Initialized empty Git repository in /app/src/lidao-G/.git/ 22 [root@devops-gitlab /app/src/lidao-G]# ll .git/ 23 total 12 24 drwxr-xr-x 2 root root 6 Feb 10 11:08 branches 25 -rw-r--r-- 1 root root 92 Feb 10 11:08 config 26 -rw-r--r-- 1 root root 73 Feb 10 11:08 description 27 -rw-r--r-- 1 root root 23 Feb 10 11:08 HEAD 28 drwxr-xr-x 2 root root 242 Feb 10 11:08 hooks 29 drwxr-xr-x 2 root root 21 Feb 10 11:08 info 30 drwxr-xr-x 4 root root 30 Feb 10 11:08 objects 31 drwxr-xr-x 4 root root 31 Feb 10 11:08 refs 32 #书写代码 #添加文件 33 [root@devops-gitlab /app/src/lidao-G]# touch oldboy-lidao-live.green 34 #查看状态 35 [root@devops-gitlab /app/src/lidao-G]# git status 36 # On branch master 37 # 38 # Initial commit 39 # 40 # Untracked files: 41 # (use "git add <file>..." to include in what will be committed) 42 # 43 # oldboy-lidao-live.green 44 nothing added to commit but untracked files present (use "git add" to track) 45 #进行添加 到缓冲区 46 git add oldboy-lidao-live.green 47 git status 48 #进行提交 到本地仓库 49 [root@devops-gitlab /app/src/lidao-G]# git commit -m '直播功能90%' 50 [master (root-commit) 075e05b] 直播功能90% 51 1 file changed, 0 insertions(+), 0 deletions(-) 52 create mode 100644 oldboy-lidao-live.green 53 [root@devops-gitlab /app/src/lidao-G]# 54 [root@devops-gitlab /app/src/lidao-G]# 55 [root@devops-gitlab /app/src/lidao-G]# 56 [root@devops-gitlab /app/src/lidao-G]# git status 57 # On branch master 58 nothing to commit, working directory clean 59 #进行回滚 60 [root@devops-gitlab /app/src/lidao-G]# \rm -f oldboy-lidao-live.green 61 [root@devops-gitlab /app/src/lidao-G]# 62 [root@devops-gitlab /app/src/lidao-G]# ll 63 total 0 64 [root@devops-gitlab /app/src/lidao-G]# 65 [root@devops-gitlab /app/src/lidao-G]# git reset --hard 075e 66 HEAD is now at 075e05b 直播功能90% 67 [root@devops-gitlab /app/src/lidao-G]# ll 68 total 0 69 -rw-r--r-- 1 root root 0 Feb 10 11:47 oldboy-lidao-live.green 70 [root@devops-gitlab /app/src/lidao-G]# git log 71 commit 075e05b7e4616813a3d9b740701cb1cc060c3df6 72 Author: oldboy <youjiu_linux@qq.com> 73 Date: Thu Feb 10 11:21:39 2022 +0800
74 直播功能90%
总结:
| 名字 | 含义 |
|
git init
|
初始化本地仓库目录 |
| git config --global | 邮箱,用户名,颜色 |
| git add | 提交数据到缓冲区 |
| git commit |
把暂存区的数据提交到本地仓库 git commit -m "标记/说明
|
|
git status
|
显示工作空间的状态
|
|
git reset
|
回滚
|
|
git reset --soft cid(版本号)
|
把指定的版本数据内容下载到暂存区
|
|
git reset HEAD
|
暂存区--->工作空间(被修改的状态)
|
|
git checkout
|
文件下载到工作空间并可以使用 git checkout . 或 git checkout 文件
|
|
reset --mix 版本号
|
|
|
git reset --hard 版本号
|
把本地仓库指定版本信息数据下载到工作目录中 |
7.2 git区域 与 状态 🌟 🌟
7.2 git分支 branch ⭐⭐⭐⭐
1) 分支?branch
分支即是平行空间,假设你在为某个手机系统研发拍照功能,代码已经完成了80%,但如果将这不完整的代码直接
提交到git仓库中,又有可能影响到其他人的工作,此时我们便可以在该软件的项目之上创建一个名叫”拍照功
能”的分支,
这种分支只会属于你自己,而其他人看不到,等代码编写完成后再与原来的项目主分支合并下即可,这
样即能保证代码不丢失,又不影响其他人的工作。
master 主分支
应用名称分支每个分支对应独立功能
2) 详解

3) 案例
1 #查看分支 2 git branch 3 #创建分支 4 git branch shopping 5 #切换分支 git checkout shopping 6 7 #修改代码 增加购物功能 8 9 [root@devops-gitlab /app/src/lidao-G]# git branch 10 * master 11 [root@devops-gitlab /app/src/lidao-G]# git branch shopping 12 [root@devops-gitlab /app/src/lidao-G]# git branch 13 * master 14 shopping 15 [root@devops-gitlab /app/src/lidao-G]# git checkout shopping 16 Switched to branch 'shopping' 17 [root@devops-gitlab /app/src/lidao-G]# git branch 18 master 19 * shopping 20 [root@devops-gitlab /app/src/lidao-G]# ll 21 total 4 22 -rw-r--r-- 1 root root 17 Feb 10 12:28 oldboy-lidao-live.green 23 [root@devops-gitlab /app/src/lidao-G]# vim oldboy-lidao-live.green 24 [root@devops-gitlab /app/src/lidao-G]# git status 25 # On branch shopping 26 # Changes not staged for commit: 27 # (use "git add <file>..." to update what will be committed) 28 # (use "git checkout -- <file>..." to discard changes in working directory) 29 # 30 # modified: oldboy-lidao-live.green 31 # 32 no changes added to commit (use "git add" and/or "git commit -a") 33 [root@devops-gitlab /app/src/lidao-G]# git add . 34 [root@devops-gitlab /app/src/lidao-G]# git commit -m '购物功能90%' 35 [shopping d4211a5] 购物功能90% 36 1 file changed, 1 insertion(+) 37 [root@devops-gitlab /app/src/lidao-G]# 38 [root@devops-gitlab /app/src/lidao-G]# 39 [root@devops-gitlab /app/src/lidao-G]# 40 [root@devops-gitlab /app/src/lidao-G]# cat oldboy-lidao-live.green 41 [root@devops-gitlab /app/src/lidao-G]# cat oldboy-lidao-live.green 42 功能开发100% 43 购物功能 90% 44 [root@devops-gitlab /app/src/lidao-G]# git branch 45 master 46 * shopping 47 [root@devops-gitlab /app/src/lidao-G]# git checkout master 48 Switched to branch 'master' 49 [root@devops-gitlab /app/src/lidao-G]# cat oldboy-lidao-live.green 50 功能开发100% 51 [root@devops-gitlab /app/src/lidao-G]# 52 #合并分支 53 git merge #把指定的分支合并到当前的分支中 54 [root@devops-gitlab /app/src/lidao-G]# git branch 55 master 56 * shopping 57 [root@devops-gitlab /app/src/lidao-G]# git checkout master 58 Switched to branch 'master' 59 [root@devops-gitlab /app/src/lidao-G]# git branch 60 * master 61 shopping 62 [root@devops-gitlab /app/src/lidao-G]# git merge shopping -m "直播功能 100% + 购物功能 100%" 63 Updating 60b94db..aadc6b3 64 Fast-forward (no commit created; -m option ignored) 65 oldboy-lidao-live.green | 1 + 1 file changed, 1 insertion(+) 66 [root@devops-gitlab /app/src/lidao-G]# 67 [root@devops-gitlab /app/src/lidao-G]# 68 [root@devops-gitlab /app/src/lidao-G]# 69 [root@devops-gitlab /app/src/lidao-G]# ll 70 total 4 71 -rw-r--r-- 1 root root 35 Feb 10 12:40 oldboy-lidao-live.green 72 [root@devops-gitlab /app/src/lidao-G]# cat oldboy-lidao-live.green 73 功能开发100% 74 购物功能 100% 75 [root@devops-gitlab /app/src/lidao-G]#
● 临时分支 比如fixbug/hotfix 分支
1 [root@devops-gitlab /app/src/lidao-G]# git branch fixbug 2 [root@devops-gitlab /app/src/lidao-G]# git branch 3 fixbug 4 * master 5 shopping 6 [root@devops-gitlab /app/src/lidao-G]# git checkout fixbug 7 Switched to branch 'fixbug' 8 [root@devops-gitlab /app/src/lidao-G]# ll 9 total 4 10 -rw-r--r-- 1 root root 35 Feb 10 12:40 oldboy-lidao-live.green 11 [root@devops-gitlab /app/src/lidao-G]# vim oldboy-lidao-live.green 12 [root@devops-gitlab /app/src/lidao-G]# vim oldboy-lidao-live.green 13 [No write since last change] 14 No manual entry for 购物功能 15 shell returned 16 16 Press ENTER or type command to continue 17 [root@devops-gitlab /app/src/lidao-G]# 18 [root@devops-gitlab /app/src/lidao-G]# 19 [root@devops-gitlab /app/src/lidao-G]# 20 [root@devops-gitlab /app/src/lidao-G]# 21 [root@devops-gitlab /app/src/lidao-G]# 22 [root@devops-gitlab /app/src/lidao-G]# cat oldboy-lidao-live.green 23 功能开发100% 24 购物功能 100% 25 无限充值bug已修复. 26 [root@devops-gitlab /app/src/lidao-G]# git add . 27 [root@devops-gitlab /app/src/lidao-G]# git commit -m "无限充值bug修复" 28 [fixbug a9d331d] 无限充值bug修复 29 1 file changed, 1 insertion(+) 30 [root@devops-gitlab /app/src/lidao-G]# git checkout master 31 Switched to branch 'master' 32 [root@devops-gitlab /app/src/lidao-G]# git branch 33 fixbug 34 * master 35 shopping 36 [root@devops-gitlab /app/src/lidao-G]# git merge fixbug -m '无限充值bug修复 与 主分支合并' 37 Updating aadc6b3..a9d331d 38 Fast-forward (no commit created; -m option ignored) 39 oldboy-lidao-live.green | 1 + 1 file changed, 1 insertion(+) 40 [root@devops-gitlab /app/src/lidao-G]# 41 [root@devops-gitlab /app/src/lidao-G]# git branch 42 fixbug 43 * master 44 shopping 45 [root@devops-gitlab /app/src/lidao-G]# git branch -d fixbug 46 Deleted branch fixbug (was a9d331d). 47 [root@devops-gitlab /app/src/lidao-G]# git branch 48 * master 49 shopping
4) git 分支命令总结
| git 分支相关命令 | |
git branch |
查看分支 |
| git branch name | 创建分支 |
| git branch -d name | 删除分支 |
| git checkout 分支名字 | 切换分支 |
| git merge 分支名字 | 合并(吸收)分支(把指定的分支合并到当前分支中) |
| git checkout -b name | 创建分支并切换到这个分支 |
7.3 入住CBD
1) 创建 仓库
2) 连接远程仓库
1 # 2 git config --global user.name "悠久之翼" 3 git config --global user.email "918391635@qq.com" 4 #添加远程仓库 5 git remote add origin git@gitee.com:lidao996/lidaoavi.git 6 #上传本地仓库的内容 到远程仓库 7 git push -u origin master

3) 密钥认证 访问远程代码仓库
● 创建密钥对
● 公钥配置到 远程代码仓库
● 添加 git协议的 远程仓库
● 上传
9.git远程仓库: 1.配置与远程仓库的认证 ssh(git)√√√√√: 需要将服务器的公钥推送到指定用户下; https: 需要有用户名称,密码,每次都需要输入; 2.添加远程仓库: git remote add origin [https://|git] 3.将本地的仓库内容,推送到远程仓库: git add . git commit -m "Messages" git push origin branch [ master | .... ] git pull origin branch 4.如果有新人加入 git clone [https://|git] git push origin branch git pull origin branch
7.4 补充
1 tag
● 给commit id 设置别名 方便我们快速查看与使用
COMMITID的一个别名,COMMITID不好记忆, 标签相对的好记忆. git tag -a "标签名称" -m "描述" 基于当前最新的COMMITID git tag -a "标签名称" -m "描述" commitID 指定版本打标签 git push origin --tags git push origin "标签名称" Master: V1.0 V2.0 Dev: b1.0 b2.0
https://blog.csdn.net/lilongsy/article/details/83094977 #1. Alpha 预览版 测试版 #2. Beta 公开测试版 #3. RC(Release Candidate) 最终测试版本 #4. Release 正式发布版本 GA (General Avaiable) Final 最终版,也是正式发布版的一种表示方法。比如Hibernate。 Stable 稳定版,来自预览版本释出使用与改善而修正完成
2 gitignore
● 代码根目录中隐藏文件,里面内容会被排除,不上传到远程仓库.
● 上传代码的时候,代码中可能包含临时文件cache .swp 排除
● 在代码根目录中创建文件.gitignore 写上要排除的内容
● 忽略上传到本地仓库的内容
gitignore忽略文件!!!! pyc cache/* config $ cat .gitignore #*.jpg *.tmp cache/*
应用场景-
1. 程序运行时产生的垃圾文件(临时文件)
2. 程序运行时产生的缓存文件(临时文件)
3. 程序本地开发使用的图片文件
4. 程序连接数据一类的配置文件(什么时候用,什么时候配置)
7.5 总结
1.git基础命令: git clone git add git commit git push git pull #下载代码并合并到当前分支中 git fetch git merge git log git reflog git status #working git branch git checkout git merge git reset --hard git remote add origin git tag 2.重点掌握 git 分支概念 3.重点掌握 git 提交 | 获取 | 克隆 4.重点掌握 git区域 5.重点掌握 ci/cd devops 6.重点掌握 开发环境 测试环境 预生产环境 生产环境 gitlab 私有仓库 | gitee花钱 jenkins

浙公网安备 33010602011771号