Git极速入门到放弃

一、 运维发展过程

(一) 软件的声明周期: 软件从0---1->0过程

(二) ci-cd-co基础

1. ci/cd🌟🌟🌟🌟🌟

  • ci cd
  • 持续集成: 开发的代码集成到代码仓库。
  • 持续交付: 从代码仓库拉取代码部署到测试环境。
  • 持续部署: 从代码仓库拉取代码部署到生产环境。

2. DevOps 🌟🌟🌟🌟🌟

  • DevOps: 理念让开发人员可以持续集成,运维人员可以持续交付和持续 部署.让整个开发过程自动部署,上线...
    • 开发写完的代码自动集成,自动交付与部署。本质是 自动化。
    • DevOps是一套快速、频繁、可靠的软件交付实践.
  • DevOps
    • Development 开发
    • Operations 运维
  • DevOPS目标是解决 开发书写代码,集成,交付,部署进度,审核缓慢.
  • DevOPS实现
    • 开发(存放收集代码 CI): git/gitlab/github/gitee( 代码平台)
    • 安全:sonarqube ....
    • 运维(部署代码 CD): jenkins maven ....插件 ... sonarqube (运维)
  • DevSecOps
    • Dev开发
    • Sec Secure 安全
    • Ops运维

3. 什么是环境 🌟🌟🌟🌟

  • 开发环境
  • 测试环境
  • 预发布环境/准生产环境/预生产环境
  • 生产环境
  • 谁部署,谁维护/负责

准生产环境/预生产环境

生产环 境

相同点

存放代码,服务配置与生产环境一致

存放代 码,......

区别

服务器的配置可以低一些,数量少一些,甚至省钱 可以用内部测试环境兼职

⚠ 关于 数据库

连接生产环境数据库(从库),nginx镜像流量(alb 镜像流量)

二、 Git极速入门到放弃

  • Git部分目标:
    • 掌握git基本应用拉取代码。
    • 拉取指定版本代码。
    • 理解什么是 分支。

角色

主机名

ip

内存

gitlab代码仓 库

qinluo-devops gitlab

10.0.0.71/172.16.1.71

2G(至 少) 推 荐 2C4G

jenkins

qinluo-devops jenkins

10.0.0.72/172.16.1.72

1G(至 少) 推 荐 2C4G

sonarqube代码检查

qinluo-devops sonar

10.0.0.73/172.16.1.73

1c1G

nexus私服

qinluo-devops nexus

10.0.0.74/172.16.1.74

1c1G

(一) 什么是git

  • scm
  • 分布式版本控制系统
  • 分布式: svn vs git
  • 版本控制
  • 软件

Git

SVN

共同 点

存放代码, 版本控制

存放代码, 版本控制

工作 模式

分布式(git代码仓库挂了,本地的 代码仍旧可以使用)

中心化(权限集中)

使用

入门较难,熟练后容易使用,目前 使用率高

入门比较简单,服务端linux, 客户端windows

分支

创建和维护分支方便

创建和维护分支繁琐

1. 1分钟部署git

其他系统安装传送门--》Git - Reference

一、 Win
https://git-scm.com/download/
二、 Linux(CentOS/Fedora/Rocky Linux/RHEL)
 #C7  
yum install -y  git 

#c8 
dnf  install -y git #或yum也可以
三、 MacOS
#需要提前安装brew
brew install   git
四、 Ubuntu/Debian
apt  install   -y   git

2. 项目测试

一、 单枪匹马勇闯天涯-开发阶段 🌟🌟🌟🌟🌟
  • git极速上手指南
#1.创建项目目录(代码目录)
mkdir -p /app/src/bugc-live
cd /app/src/bugc-live
/src/bugc-live]# ll -a 

#2.对代码目录进行初始化(书写代码的时候)成为git仓库 

##配置用户
git config 
git config --global user.name 'qinluo'
git config --global user.email '918391635@qq.com'
git config --global color.ui true   #增加一些提示颜色

git config --global --list 
##初始化代码目录
git init 
ll .git/




#3.书写代码 添加文件 
echo qinluo >index.html

#查看状态 仓库状态
git status 

#进行提交
 git add  .
 git status
#提交到本地仓库
 git commit -m '项目开始 完成60%'

名字

含义

git init

初始化本地仓库目录,每个独立的代码目录(新的) 就要运行下. .git目录

git config -- global

邮箱,用户名,颜色 全局 系统中设置1次即可

git add

提交数据到缓冲区(暂存区) git add . (所有文件) 或 git add 文件

git commit

把暂存区的数据提交到本地仓库 git commit -m "标记/说明"

git status

显示工作空间的状态

git log

查看提交记录

git reflog

查看提交记录

git reset

回滚

git reset --soft cid(版本号)

把指定的版本数据内容下载到暂存区

git reset HEAD

暂存区--->工作空间(被修改的状态)

git checkout

文件下载到工作空间并可以使用 git checkout . 或 git checkout 文件

git reset --mix 版 本号

git reset --hard 版本号

把本地仓库指定版本信息数据下载到工作目录中

三、 git分支 branch ⭐ ⭐ ⭐ ⭐
(一) 分支?branch
  • 分支即是平行空间 , 假设你在为某个手机系统研发拍照功能,代码已经完 成了80%,但如果将这不完整的代码直接 提交到git仓库中,又有可能影响到其他人的工作,此时我们便可以在该软 件的项目之上创建一个名叫”拍照功 能”的分支,

  • 这种分支只会属于你自己,而其他人看不到,等代码编写完成后再与原来 的项目主分支合并下即可,这 样即能保证代码不丢失,又不影响其他人的工作。

  • 默认的分支-master 主分支,这个分支的代码一般都是可用,可以部署到生 产环境的。

  • 一般开发人员开发代码的时候创建dev分支,shopping分支。

其他分支中的代码开发与测试完成要与主分支代码进行合并. 应用名称分支每个分支对应独立功能。

(三) 案例
  • 创shopping 分支 书写代码
默认主分支,完成直播功能,并提交
echo 完成 >>index.html
 git add  .
 git commit  -m "直播功能完成 100%"
 [master fddb08b] 直播功能完成 100%
 1 file changed, 1 insertion(+)
  • 创建shopping分支 书写代码
#查看分支
git branch
* master
#创建分支
git branch shopping 
git branch
* master
  shopping
#切换分支
git checkout shopping
Switched to branch 'shopping'

查看 切换结果 git branch
  master
* shopping

#查看远程仓库地址
git remote -v

#书写shopping代码·并提交
echo 'shopping 90%' >shopping.html
git add . 
git commint -m 'shopping 90%'
echo 'shopping 100%' >shopping.html
git add . 
git commint -m 'shopping 100%'

#把 shopping分支合并到master分支中。
切换到master 然后执行merge.
git checkout master 
git merge shopping
(四) git 分支命令总结

git 分支相关命令

说明

git branch

查看分支

git branch name

创建分支

git branch -d name

删除分支 del

git checkout 分支名 字

切换分支

git merge 分支名字

合并(吸收)分支(把指定的分支合并到当前分支 中)

git checkout -b name

创建分支并切换到这个分支

(五) 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

3. 入住CBD

  • 家---->公司--->代码
  • 家---->代码
  • 公共仓库:gitee.com/github.com
  • 私有仓库:gitlab,gogs
1. 创建仓库 私有的
2. linux创建秘钥   
3. 公钥 配置到 gitee设置--->公钥中 
4. linux执行git   remote add origin   你仓库地址(记得是git开头的)
5. git  push  origin     --all  #推送所有
6 .去仓库检查
一、如何生成公钥

--》登录gitee--》点击头像--》账号设置--》SSH公钥流程(这里不细写了)

  • 获取通过ssh密钥认证方式推拉代码的地址(git地址)
git clone   加上git上的地址

二、 进入代码目录检查结果 git remote
#检查命令
git remote -v 


#删除添加的远程仓库地址
git remote remove origin 
  • 创建文件并准备上传到远程仓库
git config --global user.name 'mapper'
 git config --global user.email '2494543852@qq.com'
 echo mapper >  new.html
 git add  .
 git commit  -m 'v3.0'
 git push  -u origin   master
三、 远程仓库小结

代码仓库访问方法

说明

https或http

每次连接的时候需要输入账号的用户名和密码

ssh

必备常用. 密钥认证

#访问仓库的主机上 创建密钥对。
ssh-keygen

#修改之前配置的远程仓库地址
git remote rename origin origin_https

git remote -v
git remote add origin git@gitee.com:qinluo/qinluo_live.git  #这里改为自己项目地址

#创建新的文件上传到远程仓库测试
touch qinluo.txt
 git add .
 git commit -m 'new file'
 git tag -m "new file" -a "v2.0" 
git push  -u origin  master
 git push -u origin  --tags
四、 git远程仓库命令小结
git远程仓库:
   1.配置与远程仓库的认证
            ssh√√√√√:     需要将服务器的公钥推送到指定用户下;
            https:(私有)  需要有用户名称,密码,每次都需要输入;
     2.添加远程仓库:
            添加add
            git remote  add origin [https://或者git(ssh)]
            删除remove 
            git remote remove orgin 即可
            改名
            git remove rename origin   bak
    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  --tags

            

(二) 总结

  • git clone
  • git add 与 git commit
  • git push
  • git remote add origin
  • git remote remove
  • git tag 标签
  • 分支
  • ci,cd,devops,DevSecOps
  • 代码上线流程
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

https://oschina.gitee.io/learn-git-branching/

三、Gitlab

(一) Gitlab 快速上手指南

1. 麒麟系统部署 gitlab 15.9

通过百度网盘分享的文件:代码上线-DevOps大礼包

链接:百度网盘 请输入提取码

提取码:1234

#安装依赖
yum install -y    policycoreutils-python-utils.noarch
#安装gitlab  rpm包
rpm -ivh --nodeps   gitlab-ce-15.9.3-ce.0.el7.x86_64.rpm
  • 修改/etc/gitlab/gitlab.rb
然后修改/etc/gitlab/gitlab.rb 文件 
external_url 'http://gitlab.qinluolinux.cn'
gitlab_rails['smtp_enable'] = false
gitlab_rails['gitlab_email_enabled'] = false
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
gitlab_rails['backup_archive_permissions'] = 0644
gitlab_rails['store_initial_root_password'] = true
gitlab_rails['registry_enabled'] = false
registry['enable'] = false
puma['ssl_listen'] = nil
puma['ssl_port'] = nil
puma['ssl_certificate'] = nil
puma['ssl_certificate_key'] = nil
puma['ssl_client_certificate'] = nil
puma['ssl_cipher_filter'] = nil
puma['ssl_verify_mode'] = 'none'
puma['exporter_enabled'] = false
postgresql['enable'] = true
postgresql['ssl'] = 'off'
redis['enable'] = true
nginx['enable'] = true
nginx['client_max_body_size'] = '250m'
nginx['redirect_http_to_https'] = false
nginx['redirect_http_to_https_port'] = 80
prometheus['enable'] = false
alertmanager['enable'] = false
node_exporter['enable'] = false
redis_exporter['enable'] = false
postgres_exporter['enable'] = false
gitlab_exporter['enable'] = false
grafana['enable'] = false
letsencrypt['enable'] = false
  • 执行Reconfigure 并检查结果
gitlab-ctl reconfigure #根据/etc/gitlab/gitlab.rb 生成各个组件的配置文件.
  • 完成后然后等待

  • 首次登录密码在以下位置

  • 检查状态
gitlab-ctl status #查看各个组件的状态
gitlab-ctl stop/start/restart 

(二) 如何配置上传代码库

  • git 从入门到放弃的项目案例中有写,,一样的方法
1. 创建仓库
2. 配置公钥 
3. 推送数据(记得hosts解析)

(三) gitlab备份与恢复 🌟🌟🌟🌟 🌟

gitlab_rails['manage_backup_path'] = true             
#是否可以指定备份目录 
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"   #备份目录 
gitlab_rails['backup_archive_permissions'] = 0600     
#备份的压缩包权限 
gitlab_rails['backup_keep_time'] = 604800             
#备份保留多久  7天
#gitlab备份  需要手动执行
  • etc/gitlab/gitlab.rb 文件以下内容修改即可
gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"
gitlab_rails['backup_archive_permissions'] = 0644
  • 配置生效
#配置生效
gitlab-ctl  reconfigure 
gitlab-ctl  restart 

[root@devops01 /server/src-code/mapper_live]#ll /var/opt/gitlab/backups -d
drwx------ 2 git root 60  8月  2 18:03 /var/opt/gitlab/backups

1. 手动备份

#GitLab 版本>=12.2
 gitlab-backup create

#GitLab 版本<=12.1:
gitlab-rake gitlab:backup:create
不在展示备份过程
#备份完成,检查有个tar文件
[root@devops01 /server/src-code/mapper_live]#ll /var/opt/gitlab/backups
总用量 480
-rw-r--r-- 1 git git 491520  8月  2 17:57 1722592656_2024_08_02_15.9.3_gitlab_backup.tar
  • 对于gitlab.rb 和gitlab-secrets.json包含敏感信息,需要手动 备份.
  • 参考: https://docs.gitlab.com/ce/raketasks/backup_restore.html

2. 自动备份

#每天备份1次 
#!/bin/bash
 #author :qinluo 
#desc  : backup  gitlab  all 

#1.备份gitlab数据
gitlab-backup create


#2.备份gitlab配置和密码文件
tar zcf  /backup/gitlab/gitlab-conf-$(date +%F).tar.gz /etc/gitlab/

#3. 传输到备份服务器
#写入定时任务
00 03 * * * sh  /server/scripts/backup-gitlab.sh  
&>/dev/null 

3. 恢复

1. 停止写入类服务
gitlab-ctl  stop  unicorn 
gitlab-ctl  stop  sidekiq


#新版本GitLab 版本>=12.2:
 gitlab-backup restore                 
BACKUP=11493107454_2018_04_25_15.9.3

#旧版本GitLab 版本<=12.1:
 gitlab-rake  gitlab:backup:restore    BACKUP=备份文件名字
不包含右边内容_gitlab-backup.tar

#正式举例
gitlab-rake  gitlab:backup:restore   BACKUP=1656036972_2022_06_24_12.0.9



Do you want to continue (yes/no)? yes 输入yes
 Do you want to continue (yes/no)? yes 输入yes

 3. 重启 gitlab 
gitlab-ctl restart

(四) 修改偏好以及添加秘钥 和修改密码

  • 直接修改一下位置的密码即可

(五) 迁移与升级

#1. 新功能,非常吸引  
#2. 修复bug,漏洞 
#3. 公司制定,统一版本.为了标准化,自动化
  • gitlab升级的要求。
需要遵循以下升级步骤以确保主版本升级成功:
1.升级至之前主要版本的最新次要版本。  
2.升级到目标主要版本的第一个次要版本(X.0.Z)。
3.继续升级到较新的版本。

(六) Https

为了防止内网渗透,将gitlab服务的访问添加了ssl,具体步骤如下:
1.gitlab配置https(请先做个快照.)

#修改的内容
external_url 'https://gitlab.qinluo.top'
nginx[' enable' ] = true
nginx['client_max_body_size' ]= '250m '
 nginx['redirect_http_to_https' ]= true
 nginx[' redirect_http_to_https _port' ] = 443
 nginx['ssl_certificate' ] = "path/ key.crt"
 nginx['ssl_certificate_key'] = "path/ key.key"
 nginx['ssl_ciphers' ] ="ECDHE-RSA-AES256-GCM
SHA384:ECDHE-RSA-AES128-GCM-SHA256"
 nginx['ssl_prefer_server_ciphers']= "on"
 nginx['ssl_protocols']= "TLSv1.2"
 nginx['ssl_session_cache ' ] = 
"builtin:1000shared:sSL: 10m"
 nginx['ssl_session_timeout']= "5m"

 核心:
nginx['ssl_certificate' ] =用于指定证书 .crt .pem
 nginx['ssl_certificate_key']  = 用于指定私钥 .key 

 2.gitlab重新初始化
gitlab-ctl reconfigure
重建配置:
gitlab-ctl restart

(七) 邮件

1. 配置邮箱 (发件人) (选作)

  • 注册的时候 Gitlab 服务器,给用户发送邮件,激活 或者找回密码
  • 用提交合并请求的时候,负责人可以收到邮件通知
##配置发件人

51 ### Email Settings
52 gitlab_rails['gitlab_email_enabled'] = true
53 gitlab_rails['gitlab_email_from'] = 'qinluo@163.com'
54 gitlab_rails['gitlab_email_display_name'] = 'qinluo_gitlab_tongzhi'
##配置详细发件人信息 
513 ### GitLab email server settings
 514 ###! Docs: https://docs.gitlab.com/omnibus/settings/smtp.html
 515 ###! **Use smtp instead of sendmail/postfix.**
517 gitlab_rails['smtp_enable'] = true
 518 gitlab_rails['smtp_address'] = "smtp.163.com"
 519 gitlab_rails['smtp_port'] = 465
 520 gitlab_rails['smtp_user_name'] = "qinluo@163.com"
 521 gitlab_rails['smtp_password'] = "????授权码"
 522 gitlab_rails['smtp_domain'] = "163.com"
 523 gitlab_rails['smtp_authentication'] = "login"
 524 gitlab_rails['smtp_enable_starttls_auto'] = true
 525 gitlab_rails['smtp_tls'] = true

 gitlab-ctl reconfigure 
gitlab-ctl restart 

2. 验证Gitlab组件 (选作 配置了邮箱)

gitlab-rails  console 回车
Notify.test_email('收件人','主题','内容').diliver_now
Notify.test_email('youjiu_linux@qq.com','Gitlab
test','测试').diliver_now

 gitlab-rails c
 Notify.test_email('收件人邮箱','Gitlab-test','测试').diliver_now
 Notify.test_email('qinluo@qq.com','Gitlab-test','测试').diliver_now

(八) 优化

  • 即只开启部分组件
## 优化暂时不用组件 (选作)
 #关闭目前不使用的组件 默认都是true  修改为 false 
#关闭prometheus
 1385 prometheus['enable'] = false
 1386 prometheus['monitor_kubernetes'] = false
 #关闭alertmanger
 1452 alertmanager['enable'] = false
 #关闭exporter 如果需要prometheus监控 则可以打开。
1474 node_exporter['enable'] = false
 1493 redis_exporter['enable'] = false
 1511 postgres_exporter['enable'] = false
 1540 gitlab_monitor['enable'] = false #gitlab_exporter
 1553 prometheus_monitoring['enable'] = false
 1560 grafana['enable'] = false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

滚刀肉`

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值