Day01-01-git
- Content List
- 0. 运维发展过程
- 1. ci-cd-co基础
- 1.1 软件的生命周期
- 1)软件的声明周期:软件从0-->1-->0过程
- 2)ci/cd
- 3)Devops
- 4) 小结
- 1.2 什么是环境
- 1.3 什么是代码部署
- 1.4 代码发布方式
- 3. DevSecOpt之Git极速入门到放弃
- 3.1 什么是git
- 3.2 应用场景
- 3.3 1分钟部署git
- 1)Win
- 2)Linux(CentOS/Fedora/Rocky Linux/RHEL)
- 3)MacOS
- 4)Ubuntu/Debian
- 4. lidao直播app辛酸史
- 4.1单枪匹马勇闯天涯-开发阶段
- 4.2 git区域与状态
- 4.3 git分支 branch
- 1)分支?branch
- 2)详解
- 3)案例(了解)
- 4)git 分支命令总结
- 4.4 入住CBD(远程仓库)
- 1)创建 仓库
- 2)连接远程仓库(用户名密码方式)
- 3)连接远程仓库(密钥认证方式)
- 3)仓库管理命令小结
- 4.5 补充
- 1 tag
- 2 gitignore
- 4.6 总结
Content List
- 运维发展过程
- 软件生命周期
- CI/CD/CO/DevOps
- 持续部署实施流程以及对应工具?*
- git使用(核心掌握拉取代码,拉取指定版本代码,分支)
- gitlab私有代码仓库
0. 运维发展过程
- 云原生时代:
以Devops、SRE框架为指导,Docker/K8S/微服务为基础,用分布式方式加上 Python和Go语言,构建一套云技术产品体系,以及进行高级管理工具的二次开发,实现属于公司自己的自动化运维体系以及云技术体系的自动化产品。使用的自动化运维产品,可以用ran cherargoCDtecktonCl gitops 等,流水线及管理工具
1. ci-cd-co基础
1.1 软件的生命周期
1)软件的声明周期:软件从0–>1–>0过程
- 代码上线流程:
- 开发书写代码
- 把代码上传到代码仓库
- 通过工具拉取代码到测试环境中,运行代码,测试人员测试
- 通过工具拉取代码部署到生产环境.
2)ci/cd
- ci cd
- ci:持续集成:开发的代码集成到代码仓库。
- cd:持续交付:从代码仓库拉取代码部署到测试环境。
- cd:持续部署:从代码仓库拉取代码部署到生产环境。
3)Devops
-
DevOps: 理念让开发人员可以持续集成,运维人员可以持续交付和持续部署.让整个开发过程自动部署,上线…
- 开发写完的代码自动集成,自动交付与部署。本质是自动化。
- DevOps是一套快速、频繁、可靠的软件交付实践.
-
DevOps
- Development 开发
- Operation 运维
-
DevOPS目标是:解决开发书写代码,集成,交付,部署进度,审核缓慢。
-
DevOPS实现
- 开发(存放收集代码 CI):git/gitlab/github/gitee(代码平台)
- 运维(部署代码 CD):jenkins maven …插件 …sonarqube (运维)
DevSecOps
Dev开发
Sec安全
Ops运维
4) 小结
- 熟悉 软件生命周期
- 必会:ci/cd/devops 持续集成 持续交付 持续部署
1.2 什么是环境
- 开发环境
- 测试环境
- 预发布环境/准生产环境/预生产环境
- 生产环境
- 谁部署,谁维护/负责
准生产环境/预生产环境 | 生产环境 | |
---|---|---|
相同点 | 存放代码,服务配置与生产环境一致 | 存放代码… |
区别 | 服务器的配置可以低一些,数量少一些,甚至省钱可以用内部测试环境兼职 | |
关于数据库 | 连接生产环境数据库(从库),nginx镜像流量(alb镜像流量) |
1.3 什么是代码部署
- 代码发布/部署 --> 开发书写的程序代码 --> 部署测试/生产环境 web服务器(站点目录中)
1.4 代码发布方式
发布方式 | 效率 | 干扰 | 安全性 |
---|---|---|---|
手动发布 | 慢 | 干扰因素很多 | 不安全 |
自动发布 | 快 | 干扰因素很少 | 安全 |
3. DevSecOpt之Git极速入门到放弃
- 学习目标:
- 使用Git命令不参考文档的情况下可以拉取代码,上传代码
- 理解什么是分支。
- 可以给公共代码仓库和私有代码仓库配置密钥认证访问
角色 | 主机名 | ip | 内存 |
---|---|---|---|
gitlab私有代码仓库 | oldboy-devops-gitlab | 10.0.0.71/172.16.1.71 | 2G(至少) 推荐2C4G |
jenkins | oldboy-devops-jenkins | 10.0.0.72/172.16.1.72 | 1G(至少) 推荐2C4G |
sonarqube代码检查 | oldboy-devops-sonar | 10.0.0.73/172.16.1.73 | 1c1G |
nexus私服 | oldboy-devops-nexus | 10.0.0.74/172.16.1.74 | 1c1G |
3.1 什么是git
-
scm
-
分布式版本控制系统
- 分布式:svn vs git
- 版本控制
- 软件
Git | SVN | |
---|---|---|
共同点 | 存放代码,版本控制 | 存放代码,版本控制 |
工作模式 | 分布式 | 中心化(权限集中) |
使用 | 入门较难,熟练后容易使用,目前使用率高 | 入门比较简单,服务端linux,客户端windows |
分支 | 创建和维护分支方便 | 创建和维护分支繁琐 |
3.2 应用场景
3.3 1分钟部署git
- 其他系统安装传送门https://git-scm.com/docs
1)Win
https://git-scm.com/download/
2)Linux(CentOS/Fedora/Rocky Linux/RHEL)
#C7
yum install -y git
#c8
dnf install -y git #或yum也可以
3)MacOS
#需要提前安装brew
brew install git
4)Ubuntu/Debian
#
apt install -y git
4. lidao直播app辛酸史
- 单枪匹马勇闯天涯-开发阶段
4.1单枪匹马勇闯天涯-开发阶段
- 配置git相关信息
#创建项目目录(代码目录)
#成为git仓库
#配置用户
git config
git config --global user.name 'oldboy'
git config --global user.email '918391635@qq.com'
git config --global color.ui true
git config --global --list
- 代码目录初始化
#初始化代码目录
[root@devops-gitlab ~]# mkdir -p /app/code/live-lidao-app
[root@devops-gitlab ~]# cd /app/code/live-lidao-app
[root@devops-gitlab live-lidao-app]# ll -a
总用量 0
drwxr-xr-x 2 root root 6 2024-05-15 10:20 .
drwxr-xr-x 3 root root 28 2024-05-15 10:20 ..
[root@devops-gitlab live-lidao-app]# git init
初始化空的 Git 版本库于 /app/code/live-lidao-app/.git/
[root@devops-gitlab live-lidao-app]# ll -a
总用量 0
drwxr-xr-x 3 root root 18 2024-05-15 10:20 .
drwxr-xr-x 3 root root 28 2024-05-15 10:20 ..
drwxr-xr-x 7 root root 119 2024-05-15 10:20 .git
[root@devops-gitlab live-lidao-app]# ll .git/
总用量 12
drwxr-xr-x 2 root root 6 2024-05-15 10:20 branches
-rw-r--r-- 1 root root 92 2024-05-15 10:20 config
-rw-r--r-- 1 root root 73 2024-05-15 10:20 description
-rw-r--r-- 1 root root 23 2024-05-15 10:20 HEAD
drwxr-xr-x 2 root root 242 2024-05-15 10:20 hooks
drwxr-xr-x 2 root root 21 2024-05-15 10:20 info
drwxr-xr-x 4 root root 30 2024-05-15 10:20 objects
drwxr-xr-x 4 root root 31 2024-05-15 10:20 refs
- git相关的仓库
- 书写代码,提交到暂存区
#书写代码 添加文件
echo oldboy >index.html
echo new app 完成度40% >index.html
#查看状态 仓库状态
git status
# 位于分支 master
#
# 初始提交
#
# 未跟踪的文件:
# (使用 "git add <file>..." 以包含要提交的内容)
#
# index.html
提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)
#进行提交
git add .
git status
# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
# (使用 "git rm --cached <file>..." 撤出暂存区)
#
# 新文件: index.html
#
- 提交代码到本地仓库
#提交到本地仓库
git commit -m '项目开始 完成60%'
[root@devops-gitlab live-lidao-app]# git commit -m "说明:项目刚刚成立,代码40%"
[master(根提交) 5faade3] 说明:项目刚刚成立,代码40%
1 file changed, 1 insertion(+)
create mode 100644 index.html
#查看状态
git status
# 位于分支 master
无文件要提交,干净的工作区
- 再次修改文件并提交
#修改文件内容
# 再次提交
git add .
git commit -m '项目完成90%'
- 进行回滚一步到位的
git checkout .
名字 | 含义 |
---|---|
git init | 初始化本地仓库目录 |
git config --global | 邮箱,用户名,颜色 |
git add | 提交数据到缓冲区(暂存区) git add . (所有文件) 或 git add 文件 |
git commit | 把暂存区的数据提交到本地仓库 git commit -m “标记/说明” |
git status | 显示工作空间的状态 |
git reset | 回滚 |
git reset --soft cid(版本号) | 把指定的版本数据内容下载到暂存区 |
git reset HEAD | 暂存区 -->工作空间(被修改的状态) |
git checkout | 文件下载到工作空间并可以使用 git checkout . 或 git checkout 文件 |
git reset --mix 版本号 | |
git reset --hard 版本号 | 把本地仓库指定版本信息数据下载到工作目录中 |
4.2 git区域与状态
- 区域
- 状态了解 熟悉
4.3 git分支 branch
1)分支?branch
分支即是平行空间,假设你在为某个手机系统研发拍照功能,代码已经完成了80%,但如果将这不完整的代码直接
提交到git仓库中,又有可能影响到其他人的工作,此时我们便可以在该软件的项目之上创建一个名叫”拍照功能”的分支,
这种分支只会属于你自己,而其他人看不到,等代码编写完成后再与原来的项目主分支合并下即可,这样即能保证代码不丢失,又不影响其他人的工作。
默认的分支-master 主分支,这个分支的代码一般都是可用,可以部署到生产环境的。
一般开发人员开发代码的时候创建dev分支,shopping分支。
应用名称分支每个分支对应独立功能。
2)详解
3)案例(了解)
- 主分支完成提交
[root@devops-gitlab live-lidao-app]# cat index.html
new app live 完成度100%
[root@devops-gitlab live-lidao-app]# git add .
[root@devops-gitlab live-lidao-app]# git commit -m "live_app_100%"
[master b0d7f3d] live_app_100%
1 file changed, 1 insertion(+), 1 deletion(-)
- 创建shopping分支 书写代码
#查看分支
git branch
* master
#创建分支
git branch shopping
git branch
* master
shopping
#切换分支
git checkout shopping
Switched to branch 'shopping'
#查看 切换结果 git branch
master
* shopping
#书写shopping代码·并提交
echo 'shopping 90%' >shopping.html
git add .
git commit -m 'shopping 90%'
echo 'shopping 100%' >shopping.html
git add .
git commit -m 'shopping 100%'
#把shopping分支合并到master分支中。
#切换到master 然后执行merge.
git checkout master
git merge shopping
[root@devops-gitlab live-lidao-app]# git merge shopping
更新 b0d7f3d..f847a2a
Fast-forward
shopping.html | 1 +
1 file changed, 1 insertion(+)
create mode 100644 shopping.html
[root@devops-gitlab live-lidao-app]# ll
总用量 8
-rw-r--r-- 1 root root 27 2024-05-15 11:29 index.html
-rw-r--r-- 1 root root 17 2024-05-15 11:37 shopping.html
4)git 分支命令总结
git 分支相关命令 | |
---|---|
git branch | 查看分支 |
git branch name | 创建分支 |
git branch -d name | 删除分支 |
git checkout 分支名字 | 切换分支 |
git merge 分支名字 | 合并(吸收)分支(把指定的分支合并到当前分支中) |
git checkout -b name | 创建分支并切换到这个分支 |
4.4 入住CBD(远程仓库)
- 家 --> 公司 --> 代码
- 家---->代码
- 公共仓库:gitee.com/github.com
- 私有仓库:gitlab,gogs
1)创建 仓库
2)连接远程仓库(用户名密码方式)
#添加远程仓库(用户名密码方式)
git remote add origin https://gitee.com/dws123456/lidao_live_app.git
#右边是密钥认证方式
git@gitee.com:dws123456/lidao_live_app.git
git remote -v # 查看
#上传本地仓库的内容 到远程仓库
git push -u origin master
#需要输入账号的用户名和密码
[root@devops-gitlab live-lidao-app]# git push -u origin "master"
Counting objects: 15, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (7/7), done.
Writing objects: 100% (15/15), 1.28 KiB | 0 bytes/s, done.
Total 15 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To git@gitee.com:dws123456/lidao_live_app.git
* [new branch] master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。
用户名是啥?下图里面的 :和/之间的就是用户名,可以在个人设置里面更改。
https://gitee.com/dws123456/lidao_live_app.git #用户名密码进行访问,上传.
git@gitee.com:dws123456/lidao_live_app.git #配置了密钥认证,密钥认证进行访问.
# 设置远程仓库的地址 git remote add origin git@gitee.com:dws123456/lidao_live_app.git # 推送本地仓库的数据到远程仓库 git push -u origin "master"
- 拉取的代码
[root@devops-gitlab ~]# git clone https://gitee.com/dws123456/lidao_live_app.git
正克隆到 'lidao_live_app'...
Username for 'https://gitee.com': 15733168732
Password for 'https://15733168732@gitee.com':
remote: Enumerating objects: 15, done.
remote: Counting objects: 100% (15/15), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 15 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (15/15), done.
[root@devops-gitlab ~]# ll
总用量 4
-rw-------. 1 root root 1354 2024-02-18 16:37 anaconda-ks.cfg
drwxr-xr-x 3 root root 57 2024-05-15 13:38 lidao_live_app
[root@devops-gitlab ~]# cd lidao_live_app/
[root@devops-gitlab lidao_live_app]# ll -a
总用量 8
drwxr-xr-x 3 root root 57 2024-05-15 13:38 .
dr-xr-x---. 5 root root 215 2024-05-15 13:38 ..
drwxr-xr-x 8 root root 163 2024-05-15 13:38 .git
-rw-r--r-- 1 root root 27 2024-05-15 13:38 index.html
-rw-r--r-- 1 root root 17 2024-05-15 13:38 shopping.html
[root@devops-gitlab lidao_live_app]# git remote -v
origin https://gitee.com/dws123456/lidao_live_app.git (fetch)
origin https://gitee.com/dws123456/lidao_live_app.git (push)
3)连接远程仓库(密钥认证方式)
- 创建秘钥对
[root@devops-gitlab live-lidao-app]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:/wgYf5XN71M955MeuftotOhgui5yW2/3bXJuF/Km8Gw root@devops-gitlab
The key's randomart image is:
+---[RSA 2048]----+
| |
| |
| |
| + |
| . S o o .|
| + . . ..+=|
| . + =. oo=B|
| . o. *.+*E+XO|
| o.++ooo+**X@|
+----[SHA256]-----+
[root@devops-gitlab lidao_live_app]# ll /root/.ssh/
总用量 12
-rw------- 1 root root 1679 2024-05-15 12:00 id_rsa
-rw-r--r-- 1 root root 400 2024-05-15 12:00 id_rsa.pub
[root@devops-gitlab live-lidao-app]# cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4o7LVm5RA+id+QjbFy6JtpJsfVZj25ICN13C2zNvjFIhalVAAE1DYsuvt4njgPaSmW1JfU06Lci6HV+7HI5dEfVHO0dmA1HzxHzNquge99Zn6GaLTSwrnuvwfBQnUZrWbGasny2SyyuMvBw0THflDqiH8whMcbKtsel+Fkwm1TENqtvH9dJx2G9c+leoMUFIrq9/bPwTYx0vkYggx4i2/d1hadYIGS9BEeDjNI0m5H400ZHOEMesvMcXt8x4BbLBftrQeqzxst/uKpjysGER4bsL3+5ZM/ZHwLrxyTv4dic+bqh4N2f30677HvDUaE/3faROe8X5CDfGkTGYiqGgl root@devops-gitlab
- 在远程仓库配置密钥
代码仓库访问方法 | 说明 |
---|---|
https | 每次连接的时候需要输入账号的用户名和密码 |
ssh | 必备常用. 密钥认证 |
#访问仓库的主机上 创建密钥对。
ssh-keygen
#修改之前配置的远程仓库地址
git remote remove origin
git remote -v
git remote add origin git@gitee.com:dws123456/lidao_live_app.git
#查询
git remote -v
origin git@gitee.com:dws123456/lidao_live_app.git (fetch)
origin git@gitee.com:dws123456/lidao_live_app.git (push)
#创建新的文件上传到远程仓库测试
touch lidao.txt
git add .
git commit -m "110%"
#上传到远程仓库
git push -u origin master
3)仓库管理命令小结
9.git远程仓库:
1.配置与远程仓库的认证
ssh√√√√√: 需要将服务器的公钥推送到指定用户下;
https:(私有) 需要有用户名称,密码,每次都需要输入;
2.添加远程仓库:
git remote add origin [https://或者git(ssh)]
删除 git remote remove orgin 即可
git remote -v
3.将本地的仓库内容,推送到远程仓库:
git add .
git commit -m "Messages"
git push -u origin branch (分支名字) [ master | .... ]
git pull origin branch(分支名字)
4.如果有新员工加入
指定仓库的代码都下载。
git clone [https://|git]
git push origin 分支名字
git pull origin 分支名字
4.5 补充
1 tag
- tag标签:给commit id设置别名,方便我们快速查看与使用,一般tag标签表示软件的版本.
#创建标签
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
git clone -b 标签、分支 https/git
[root@devops-gitlab live-lidao-app]# git tag -a v1.0 -m "new 1.0"
[root@devops-gitlab live-lidao-app]# git push origin master
Everything up-to-date
[root@devops-gitlab live-lidao-app]# git push origin --tags
Counting objects: 1, done.
Writing objects: 100% (1/1), 156 bytes | 0 bytes/s, done.
Total 1 (delta 0), reused 0 (delta 0)
remote: Powered by GITEE.COM [GNK-6.4]
To git@gitee.com:dws123456/lidao_live_app.git
* [new tag] v1.0 -> v1.0
2 gitignore
-
上传代码的时候,代码中可能包含临时文件cache .swp 排除
-
在代码根目录中创建文件.gitignore 写上要排除的内容
-
忽略上传到本地仓库的内容
gitignore忽略文件!!!!
pyc
cache/*
config
$ cat .gitignore
#*.jpg
*.tmp
cache/*
-
应用场景:
- 程序运行时产生的垃圾文件(临时文件)
- 程序运行时产生的缓存文件(临时文件)
- 程序本地开发使用的图片文件
- 程序连接数据一类的配置文件(什么时候用,什么时候配置)
-
各类语言的ignore文件
链接: https://github.com/github/gitignore
4.6 总结
- git clone
- git add 与 git commit
- git push
- git remote add origin
- git remote remove
- git tag 标签
- 分支
- ci,cd,devops,devsecops
- 代码上线流程