CICD01 Git, GitLab, 部署方式 ubuntu使用

news/2025/1/12 13:15:35/文章来源:https://www.cnblogs.com/ludingchao/p/18544789

版本管理系统 Git 和 GitLab

1 DevOps 简介

1.3 持续集成、持续交付和持续部署 CICD

CICD: 持续集成, 持续交付, 持续部署

1.6 常见的软件部署模式

生产中 蓝绿部署 和 金丝雀用的比较多

1.6.1 蓝绿部署 Blue-green Deployments

一个和生产环境一样的预发布环境, 和生产环境切换来升级。涉及到数据库,就不太好切换

1.6.2 金丝雀(灰度)发布 Canary Deployment

先让一部分用户先升级 (像支付宝有地区识别,可以让一些城市先试点。也可以根据用户级别来区分)

1.6.3 滚动发布(更新)

滚动发布即逐步升级服务中的节点

滚动发布是指每次只升级一个或多个服务实例,升级完成后加入生产环境,不断执行这个过程,直到集群中的全部旧版本升级新版本。

1.6.4 A/B测试 A/B Testing

适合有实力的公司,大厂

2个团队做两个软件,同时放到市场上竞争,好的那个留下来

 

2 版本控制系统 Git

2.3 Git 安装

2.3.1 Linux 安装 git

#官网
https://git-scm.com/download/linux

如果要安装最新版,添加仓库
#范例: Ubuntu 安装最新版
[root@ubuntu1804 ~]#add-apt-repository ppa:git-core/ppa
[root@ubuntu1804 ~]#apt update
[root@ubuntu1804 ~]#apt -y install git

范例

#当前文件夹初始化
]#git init    #配置git使用用户 (global:同一个系统用户,所有项目都用这个用户) #推荐用global
[root@git ~]#git config --global user.name "qls"
#local:设置的名字只针对这个项目有效
[root@git ~]#git config --local user.name "qls"#查看当前git用户
]#git config --global -l#为了避免重名,设置邮箱
[root@git ~]# git config --global user.email 123@qq.com#添加所有文件到暂存区
]#git add .    #查看状态
]#git status#提交
]#git commit -m 'first file'#查看状态
]#git status#老文件可以同时添加到暂存区和提交(新文件只能先add后commit)
]#git commit -am 'line2'

2.4.2.3 设置忽略文件

2.4.2.4 将文件加入暂存区再取消添加

#查看暂存区文件
[root@gitlab testproject]#git ls-files
f1.txt#从暂存区删除
#方法1
[root@gitlab testproject]#git rm --cached f1.txt
#方法2
[root@gitlab testproject]#git restore --staged f1.txt

2.4.2.6 利用暂存区恢复误删除的工作区文件

#从暂存区复制文件到工作目录
[root@gitlab testproject]#git checkout test.txt

2.4.2.7 同时删除工作区和暂存区 (了解)

#同时删除工作区和暂存区文件
[root@gitlab testproject]#git rm -f f2.txt

2.4.2.9 多次提交后回滚至指定提交的版本

2.4.2.9.1 git reset

--soft  #工作目录和暂存区都不会被改变,只是本地仓库中的文件回滚到指定的版本,仅移动HEAD和master指针的指向,不会重置暂存区或工作区
--mixed #默认选项。回滚暂存区和本地仓库,但工作目录不受影响
--hard  #本地仓库,暂存区和工作目录都回滚到指定的提交,该选项非常危险

2.4.2.9.2 git revert

虽然也是回退,但是在log记录中作为下一个版本,合并不会冲突。上面的git reset合并会有分支冲突

git revert 用法

git revert HEAD           #撤销前一次commit,会交互式打开文本编辑器提示输入提交信息
git revert HEAD --no-edit #非交互式撤销前一次提交
git revert HEAD^ #撤销前前一次commit
git revert <commitid> #撤销指定的版本,撤销也会作为一次提交进行保存。

reset和revert区别

git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。
git reset是把HEAD向后移动了一下,而git revert是HEAD继续前进,只是新的commit的内容跟要
revert的内容正好相反,能够抵消要被revert的内容。

2.4.2.10 创建分支和合并分支

#查看所有分支情况
[root@ubuntu2204 myai]#git log --pretty --oneline --graph --all

2.5 公有云仓库

2.5.2 使用 gitee

注: 网上拉取项目时,实际上所有分支都有了,git branch --all 可以看到。git pull 能拉取所有分支

注: github访问困难,码云上可以导入github仓库(等于于码云去github拉代码),然后从码云上拉代码

 

3 私有软件仓库 GitLab

3.1 GitLab 介绍

Gitlab 是一个由很多应用组成复杂的系统 
由于Gitlab 组件众多,各个组件的分别管理配置过于复杂,所以官方提供了 Omnibus GitLab 项目实现方便 的管理  
管理各组件使用统一命令为gitlab-ctl,例如gitlab-ctl reconfigure或gitlab-ctl restart等能统—执行各组件的重新配置及重启操作 

3.2 GitLab 安装

内存最低 4g

3.2.1 安装方法

Linux 安装包:官方的 deb/rpm 安装包(也被称作 Omnibus GitLab)包含极狐GitLab 和依赖的组件,包括PostgreSQL、Redis 和 Sidekiq    #推荐
Source:源码安装,在GitLab没有提供适用的安装包的平台上(例如各类BSD系统)只能采用这种
安装方式 #不推荐,里面的组件需要一个个安装
Docker:Docker 容器化的极狐GitLab 软件包 #不推荐,有性能损耗

3.2.4 GitLab 安装

#文档,包含安装方式
https://docs.gitlab.com/ce/install/
#官方gitlab 包下载链接
https://packages.gitlab.com/gitlab
#yum源清华大学下载地址:
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/
#Ubuntu 的deb源
https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/

范例:Ubuntu 国内镜像下载并安装 GitLab

[root@gitlab ~]#wget https://mirrors.tuna.tsinghua.edu.cn/gitlabce/ubuntu/pool/bionic/main/g/gitlab-ce/gitlab-ce_16.9.1-ce.0_amd64.deb
[root@gitlab ~]#dpkg -i gitlab-ce_16.9.1-ce.0_amd64.deb#设置外部访问的url地址(写ip也可以)
[root@gitlab ~]#vim /etc/gitlab/gitlab.rb
external_url 'http://gitlab.wang.org'
#里面有些组件用不到,如Prometheus可以配置里关掉 prometheus['enable'] = false#本机域名做好也加上,有时候需要通过本机域名来访问自己
[root@gitlab ~]#vim /etc/hosts
10.0.0.151 gitlab.wang.org#当前配置生效,里面各个服务生成对应配置文件,并启动
[root@gitlab ~]#gitlab-ctl reconfigure#验证 GitLab 启动完成
[root@gitlab ~]#gitlab-ctl status#浏览器登录,并修改密码(用户图标下edit profile) 1U4JwKBJPvAkXv7Eln7KCIw7hd/Z4PFpfQ3EuqiFRv8=
http://10.0.0.151/
#用户名root, 密码在 /etc/gitlab/initial_root_password (也可以在配置里修改初始化密码)#关闭注册功能
#登录上方提示检查注册限制,点击deactivate,消掉Sign-up enabled上的勾(Sign-in是登录,别搞错)
#点击save changes#修改语言
#用户图标下preferences,下拉语言调成中文,保存修改

3.4 GitLab 用户和组管理

#创建用户
#点击左上角狐狸图标,添加人员#点击左上角狐狸图标,创建群组
#可见度级别选私有,只有项目组的人才能看#创建项目
#点击左上角狐狸图标,创建项目

3.6 GitLab 的数据备份和恢复 (重点)

备份

#备份配置文件命令
gitlab-ctl backup-etc --backup-path <DIRECTORY>
#如果不指定--backup-path <DIRECTORY>,则默认备份至/etc/gitlab/config_backup/
#本质上就是打包/etc/gitlab下的文件,相当于 tar cf /root/gitlab-conf.tar /etc/gitlab
#范例:备份配置文件命令
[root@ubuntu1804 ~]#gitlab-ctl backup-etc
#生成 gitlab_config_1730630600_2024_11_03.tar#手动备份数据(尽量在没人用时做,别人没上传代码,定时任务半夜2点之类)
#GitLab 12.2之后版本
gitlab-backup create
#GitLab 12.1之前版本
gitlab-rake gitlab:backup:create
#查看 /etc/gitlab/gitlab.rb 默认备份路径
#gitlab_rails['backup_path'] = "/var/opt/gitlab/backups"#生成 1730631102_2024_11_03_16.9.1_gitlab_backup.tar

3.6.5 执行恢复

所有的还原都应该是停止在还原。例如mysql,否则还原数据和使用会有干扰

#查看状态
gitlab-ctl status#恢复前先停止两个服务(停完,gitlab拒绝用户访问)
[root@ubuntu1804 ~]#gitlab-ctl stop puma
[root@ubuntu1804 ~]#gitlab-ctl stop sidekiq#恢复时指定备份文件的时间部分,不需要指定文件的全名
#gitlab-backup restore BACKUP=备份文件名的时间部分_Gitlab版本
[root@ubuntu1804 ~]#gitlab-backup restore BACKUP=1730631102_2024_11_03_16.9.1
Do you want to continue (yes/no)? yes#应用下配置
[root@ubuntu1804 ~]#gitlab-ctl reconfigure
#启动服务
[root@ubuntu1804 ~]#gitlab-ctl restart

3.8 GitLab 迁移和升级

迁移流程
1.在原GitLab主机上备份配置文件和数据
2.在目标主机上安装相同的版本的GitLab软件
3.还原配置和数据
4.本质上就是备份和恢复的过程
升级流程
1.如果新主机,需要先安装原版本,并还原配置和数据 #这样不影响原来机器使用,安全
2.不能直接跳过中间的版本直接升级,选择最近的大版本进行升级
比如:12.1想升级到13.0,先升级到12.X最高版,再升级到13.0.
3.下载新版本的安装包,直接安装包
4.安装包时可能会提示出错,原因是版本升级后有些配置项会过时,根据提示修改配置即可
5.重新配置: gitlab-ctl reconfigure
6.重启服务: gitlab-ctl restart

3.9 实现 Https

注意:建议使用权威CA颁发的证书,自签名的证书需要加入信任,否则会导致后续git clone等操作失败

#一般在内网使用,不用https,这里用自签证书做范例
#创建证书
[root@gitlab ~]#mkdir -p /etc/gitlab/ssl && cd /etc/gitlab/ssl
[root@gitlab ssl]#openssl genrsa -out gitlab.wang.org.key 2048
#网页为gitlab.wang.org,这个不能写错
[root@gitlab ssl]#openssl req -days 3650 -x509 \
-sha256 -nodes -newkey rsa:2048 -subj
"/C=CN/ST=beijing/L=beijing/O=wang/CN=gitlab.wang.org" -keyout gitlab.wang.org.key -out gitlab.wang.org.crt#修改配置文件的如下内容
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
external_url "https://gitlab.wang.org" #此项必须修改为https,必选项
nginx['enable'] = true  #可选
nginx['client_max_body_size'] = '1000m' #可选(最大上传文件大小)
nginx['redirect_http_to_https'] = true
nginx['redirect_http_to_https_port'] = 80 #可选,所有请求80的都跳转到443,默认值,可不修改,保持注释状态
nginx['ssl_certificate'] ="/etc/gitlab/ssl/gitlab.wang.org.crt"   #必选项
nginx['ssl_certificate_key'] ="/etc/gitlab/ssl/gitlab.wang.org.key"   #必选项#重新初始化
[root@gitlab ~]# gitlab-ctl reconfigure
[root@gitlab ~]# gitlab-ctl restart
[root@gitlab ~]# gitlab-ctl status#还登录原来的URL,会自动跳转到 https#注:如果使用互联网颁发的CA证书,那么git clone https下载没问题,如用自签名的证书,会报错本地没有该证书
#自签名解决方法,把自签证书内容拷贝到自己的ca证书内,再git clone就不会报错了
[root@gitlab ~]#cat /etc/gitlab/ssl/gitlab.wang.org.crt 
[root@gitlab ~]#vim /etc/ssl/certs/ca-certificates.crt    #拷贝在最下面(这里是ubuntu路径)

3.10 找回 GitLab 忘记的密码

#官方说明
https://docs.gitlab.com/ee/security/reset_user_password.html#reset-the-root-passwor#范例: 
#打开控制台
[root@gitlab ~]#gitlab-rails console -e production
#此步可能比较慢,需要等一段时间#输入下面指令
#方法1(如果用户名没改,查root)
irb(main):001:0> user = User.find_by_username 'root'
#方法2(直接查root账户)
irb(main):001:0> user = User.where(id: 1).first
=> #<User id:1 @root>    #说明用户名还叫root#更改密码并确认密码  wang@123
irb(main):002:0> user.password="wang@123"
=> "wang@123"
irb(main):003:0> user.password_confirmation="wang@123"
=> "wang@123"
#保存
irb(main):004:0> user.save
=> true#退出控制台
irb(main):005:0> quit#验证用新密码登录,注意:要使用external_url对应的URL登录才可以

 

 

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

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

相关文章

jvm 垃圾回收算法的评价标准

如何实现回收的(核心思想): 1. 找到内存中存活的对象(与GC Root相关联) 2. 释放不再存活对象的内存,使得程序能再次利用这部分空间 --------------------------------------------------------------------------------- 垃圾回收算法的分类: -------- ----------------…

GO面试-切片

一、结构介绍 切片(Slice)在 Go 语言中,有一个很常用的数据结构,切片是一个拥有相同类型元素的可变长度的序列,它是基于数组类型做的一层封装。它非常灵活,支持自动扩容。并发不安全。 切片是一种引用类型,它有三个属性:指针,长度和容量。 底层源码定义: type slice …

系统管理体系——软件包管理

1.Linux系统管理体系——软件包管理Linux下面的软件包格式为:rpm格式(红帽系列系统,CentOS,麒麟系统)或deb格式(Debian,Ubuntu)安装软件方式 举例 说明 应用场景yum/apt 方式 点外卖,缺啥少啥,外卖解 决 通过网络下载软件包,替我们安装, 如果 有依赖自动下载依赖并安装. …

Linux12位权限管理体

1. Linux12位权限管理体 1.1 权限管理概述Linux通过rwx3种权限控制系统与保护系统,组成9位权限. Linux权限体系中还有3位特殊权限,组合起来就是12位权限体系. Linux这简单的rwx控制整个Linux系统的安全,权限与用户共同组成Linux系统的安全防护体系.1.2 Linux权限计算 2.0 rwx权…

Java流程控制(三)

用户交互Scanner(java.util.Scanner获取用户的输入)//基本语法 Scanner s = new Scanner(System.in)通过Scanner类的next()与nextLine()方法获取输入的字符串,使用hasNext()与hasNextLine()判断是否还有输入的数据(Next不能得到带有空格的字符串,NextLine可以获得空白)im…

0.1+0.2=0.30000000000000004

看下效果这个网站能找到你想要的答案 https://0.30000000000000004.com/ 十进制转二进制 十进制整数转换为二进制整数采用"除2取余,逆序排列"法。 具体做法是:用2整除十进制整数,可以得到一个商和余数; 再用2去除商,又会得到一个商和余数,如此进行,直到商为小…

「AT_diverta2019_2_e」Balanced Piles 题解

题意描述 有一个长度为 \(N(2\le N \le 10^6)\) 的数组,一开始所有元素均为 \(0\)。 设 \(M\) 为当前数组中的最大元素,\(m\) 是当前数组中的最小元素,你可以执行若干次以下操作:选择一个大小为 \(m\) 的元素,把他变为 \(x\),其中 \(M\le x \le M+D\) 且 \(m<x\)。 求…

团队项目Scrum冲刺-day3

一、每天举行站立式会议 站立式会议照片一张昨天已完成的工作成员 任务陈国金 用户模块的部分接口凌枫 用户登录页面陈卓恒 用户注册界面谭立业 题目搜索页面部分内容廖俊龙 接口测试曾平凡 前端页面测试曾俊涛 题目模块的部分接口薛秋昊 题目提交模块的部分接口今天计划完成的…

Logisim-016-海明解码

仓库地址 https://gitee.com/gitliang/logisim-to-cpu

Logisim-016-海明编码

仓库地址 https://gitee.com/gitliang/logisim-to-cpu

Object

Object 类是 Java 中的顶级父类, 所有的类都直接或间接继承于 Object 类. Object 类中的方法可以被所有子类访问. Object 类没有成员变量, 所以只有无参构造方法. Java 中, 子类的共性才会往父类中去抽取, 然而不可能有一个属性是所有类的共性, 所以在 Object 这个类中, 是没有…

Windows平台下安装与配置MySQL5.7

1.下载mysql安装文件 下载地址:https://downloads.mysql.com/archives/installer/2.安装与配置MySQL 双击打开,接受许可协议,点击下一步:选择自定义安装,点击下一步:选择要安装的产品,点击下一步:点击执行按钮:安装完成,点击下一步进入配置界面:配置界面继续点击下一…