CI/CD以及gitlab搭设

一:Git、Github、Gitlab 的区别

Git是版本控制系统

Github是在线的基于Git的代码托管服务,GitHub提供付费账户和免费账户,都可以创建公开的代码仓库,可以创建私有的代码仓库

Gitlab 创建免费的私人仓库

二:Git简介

1.GIt介绍

Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目

Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件

Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持

2.Git工作流程

克隆 Git 资源作为工作目录

在克隆的资源上添加或修改文件

如果其他人修改了,你可以更新资源

在提交前查看修改

提交修改

在修改完成后,如果发现错误,可以撤回提交并再次修改并提交

image-20220622135814482

3.git的工作区、暂存区和版本库

工作区:就是你在电脑里能看到的目录

暂存区:英文叫stage, 或index。一般存放在"git目录"下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)

版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库

img

4.Git安装
[root@xingdian-git ~]# yum -y install git curl-devel expat-devel gettext-devel openssl-devel zlib-devel git-core

三:Git使用

Git 提供了一个叫做 git config 的工具,专门用来配置或读取相应的工作环境变量

这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。这些变量可以存放在以下三个不同的地方:

/etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件

~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件

当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效

1.Git用户信息

配置个人的用户名和电子邮件地址:

git config --global user.name "自定义名称"

git config --global user.email "自身邮箱地址"

2.查看配置信息

[root@xingdian-git ~]# git config --list
user.name=xingdian
user.email=xingdian@1000phone.com

这些配置我们也可以在 ~/.gitconfig 或 /etc/gitconfig 看到,如下所示:

[root@xingdian-git ~]# cat ~/.gitconfig
[user]
    name = xingdian
    email = xingdian@1000phone.com

注意:

git config --global 参数
取消代理:
    git config --global --unset http.proxy
    git config --global --unset https.proxy
设置代理:
    git config --global http.proxy http://domain.local\vsilva:Passw0rd@proxyServer:8080
出现各种 SSL certificate problem 的解决办法:
    git config --global http.sslVerify false

3.常用的git命令

git init 初始化

git add main.app 将某一个文件添加到暂存区

git add . 将文件夹下的所有的文件添加到暂存区

git commit -m "note" 将暂存区中的文件保存成为某一个版本

git log 查看所有的版本日志

git status 查看现在暂存区的状况

git diff 查看现在文件与上一个提交-commit版本的区别

git reset --hard HEAD^ 回到上一个版本

git reser --hard XXXXX xxx为版本编号,回到某一个版本

git pull origin master 从主分支pull到本地

git push -u origin master 从本地push到主分支

git pull pull默认主分支 git push push默认主分支

4.Git使用

ssh 链接:

客户机上产生公钥上传到gitlab的SSH-Keys里,git clone下载和git push上传都没问题,这种方式很安全

ssh连接github:

登录github,这是github的主页(如果没有账户需要注册)

Git服务器生成秘钥:

ssh-keygen

cat .ssh/id_rsa.pub

将生成的密钥添加到Gitee服务器

git服务器上创建项目并上传到gitee:

git clone ssh链接

mkdir a

cd a

git remote add origin ssh链接

echo "自定义内容" > 自定义文件

git add .

git commit -m "自定义版本简介"

git pull ssh链接 同步数据

git push -u origin 上传数据

5.使用github上的项目

注意:

前期的配置略

下载仓库到本地:

[root@xingdian-cloud opt]# git clone git@github.com:blackmed/xingdiancloud-dian.git
Cloning into 'xingdiancloud-dian'...
Warning: Permanently added 'github.com,20.205.243.166' (ECDSA) to the list of known hosts.
remote: Enumerating objects: 7, done.
remote: Counting objects: 100% (7/7), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 7 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (7/7), done.
[root@xingdian-cloud opt]# ls
xingdiancloud-dian

进入工作目录,模拟代码更新:

[root@xingdian-cloud opt]# cd xingdiancloud-dian/
[root@xingdian-cloud xingdiancloud-dian]# ls
diandian  README.md
[root@xingdian-cloud xingdiancloud-dian]# echo "diange is very good" > xingdian
[root@xingdian-cloud xingdiancloud-dian]# git add .
[root@xingdian-cloud xingdiancloud-dian]# git commit -m "this is diange"
[main 73139aa] this is diange
 1 file changed, 1 insertion(+)
 create mode 100644 xingdian
[root@xingdian-cloud xingdiancloud-dian]# git push -u origin main
Warning: Permanently added 'github.com,20.205.243.166' (ECDSA) to the list of known hosts.
Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 322 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:blackmed/xingdiancloud-dian.git
   ec322d0..73139aa  main -> main
Branch main set up to track remote branch main from origin.
6.版本穿梭

版本回退:

# 用 git log 命令查看:
# 每一个提交的版本都唯一对应一个 commit 版本号,
# 使用 git reset 命令退到上一个版本:
[root@xingdian-git ~]# git reset --hard HEAD^
[root@xingdian-git ~]# git reflog 
# 查看命令历史,以便确定要回到哪个版本
[root@xingdian-git ~]# git reset --hard commit_id    
# 比如git reset --hard 3628164
​
消失的ID号:
回到早期的版本后再查看git log会发现最近的版本消失,可以使用reflog查看消失的版本ID,用于回退到消失的版本
[root@xingdian-git ~]# git reflog
7.分支管理

创建分支:

[root@xingdian-git ~]# git checkout -b dev     #创建dev分支,然后切换到dev分支
[root@xingdian-git ~]# git checkout   #命令加上-b参数表示创建并切换,相当于以下两条命令:
[root@xingdian-git ~]# git branch dev 
[root@xingdian-git ~]# git branch              #命令查看当前分支,
[root@xingdian-git ~]# git branch              #命令会列出所有分支,当前分支前面会标一个*号
[root@xingdian-git ~]# git branch 
* dev   master
[root@xingdian-git ~]# git add readme.txt 
git commit -m "branch test"  # 在dev分支上正常提交.

分支切换:

[root@xingdian-git ~]# git checkout master     # 切换回master分支
# 查看一个readme.txt文件,刚才添加的内容不见了,因为那个提交是在dev分支上,而master分支此刻的提交点并没有变 

合并分支:

[root@xingdian-git ~]# git merge dev           # 把dev分支的工作成果合并到master分支上
[root@xingdian-git ~]# git merge               # 命令用于合并指定分支到当前分支。
# 合并后,再查看readme.txt的内容,就可以看到,和dev分支的最新提交是完全一样的。

删除分支:

[root@xingdian-git ~]# git branch -d dev       #删除dev分支了:
删除后,查看branch,就只剩下master分支了.

四:Gitlab部署与使用

1.资源环境
主机名IP地址服务
gitlab10.0.0.110gitab-ce
2.环境部署

修改主机名:

[root@localhost ~]# hostnamectl --static set-hostname cicd-gitlab

关闭防火墙和selinux:

[root@cicd-gitlab ~]#  systemctl stop iptables firewalld
[root@cicd-gitlab ~]#  systemctl disable iptables firewalld
[root@cicd-gitlab ~]#  setenforce 0

开启邮件服务:

[root@cicd-gitlab ~]# systemctl start postfix
[root@cicd-gitlab ~]# systemctl enable postfix

添加本地解析:

[root@cicd-gitlab ~]# vim /etc/hosts
10.0.1.86 gitlab.qfedu.com
3.安装gitlab依赖包
[root@cicd-gitlab ~]# yum install -y curl openssh-server openssh-clients postfix cronie policycoreutils-python
4.添加gitlab安装源
阿里源
[root@cicd-gitlab ~]# vim /etc/yum.repos.d/gitlab-ce.repo
[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
Repo_gpgcheck=0
Enabled=1
gpgcheck=0
清华源:
[root@cicd-gitlab ~]# vim gitlab-ce.repo
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
​
[root@cicd-gitlab ~]# vim gitlab-ee.repo
[gitlab-ee]
name=Gitlab EE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ee/yum/el$releasever/
gpgcheck=0
enabled=1
官方源:
[root@cicd-gitlab ~]# vim runner_gitlab-ci-multi-runner.repo
[runner_gitlab-ci-multi-runner]
name=runner_gitlab-ci-multi-runner
baseurl=https://packages.gitlab.com/runner/gitlab-ci-multi-runner/el/7/$basearch
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/runner/gitlab-ci-multi-runner/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300
​
[runner_gitlab-ci-multi-runner-source]
name=runner_gitlab-ci-multi-runner-source
baseurl=https://packages.gitlab.com/runner/gitlab-ci-multi-runner/el/7/SRPMS
repo_gpgcheck=1
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/runner/gitlab-ci-multi-runner/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt
metadata_expire=300

5.安装gitlab

[root@cicd-gitlab ~]# yum -y install gitlab-ce 
# 自动安装最新版
6.查看gitlab版本
[root@xingdian-git ~]# head -1 /opt/gitlab/version-manifest.txt
gitlab-ce 13.6.1
7.Gitlab 配置登录链接
#设置登录链接
[root@cicd-gitlab ~]# vim /etc/gitlab/gitlab.rb
***
## GitLab URL
##! URL on which GitLab will be reachable.
##! For more details on configuring external_url see:
##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
# 没有域名,可以设置为本机IP地址
external_url 'http://10.0.1.86'
***
[root@cicd-gitlab ~]# grep "^external_url" /etc/gitlab/gitlab.rb
external_url 'http://10.0.1.86'     #绑定监听的域名或IP
8.初始化 Gitlab
 [root@cicd-gitlab ~]# gitlab-ctl reconfigure   
.....
9.启动 Gitlab 服务
[root@cicd-gitlab ~]# gitlab-ctl start
​
[root@cicd-gitlab ~]# lsof -i:80
COMMAND   PID       USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx   22500       root    7u  IPv4  50923      0t0  TCP *:http (LISTEN)
nginx   22501 gitlab-www    7u  IPv4  50923      0t0  TCP *:http (LISTEN)
10.Gitlab服务管理
[root@cicd-gitlab ~]# gitlab-ctl start # 启动所有 gitlab 组件;
[root@cicd-gitlab ~]# gitlab-ctl stop   # 停止所有 gitlab 组件;
[root@cicd-gitlab ~]# gitlab-ctl restart # 重启所有 gitlab 组件;
[root@cicd-gitlab ~]# gitlab-ctl status    # 查看服务状态;
[root@cicd-gitlab ~]# gitlab-ctl reconfigure    # 初始化服务;
[root@cicd-gitlab ~]# vim /etc/gitlab/gitlab.rb   # 修改默认的配置文件;
[root@cicd-gitlab ~]# gitlab-ctl tail    # 查看日志;

11.登录Gitlab

在浏览器中输入 http://10.0.0.110,然后 change password: ,并使用root用户登录 即可 (后续动作根据提示操作)

11.Gitlab部署https方式

创建私有密钥

mkdir   -p  /etc/gitlab/ssl
openssl genrsa  -out "/etc/gitlab/ssl/gitlab.example.com.key"

创建私有证书

 openssl req -new -key "/etc/gitlab/ssl/gitlab.example.com.key"  -out "/etc/gitlab/ssl/gitlab.example.com.csr"

创建CRT签署证书

openssl x509 -req -days 365 -in "/etc/gitlab/ssl/gitlab.example.com.csr" -signkey "/etc/gitlab/ssl/gitlab.example.com.key" -out "/etc/gitlab/ssl/gitlab.example.com.crt"

创建pem证书: 利用openssl命令输出pem证书

openssl dhparam -out /etc/gitlab/ssl/dhparam.pem 2048

查看生成的证书:

ll  /etc/gitlab/ssl
chmod 600 /etc/gitlab/ssl/* 修改文件权威

配置 gitlab:

vim /etc/gitlab/gitlab.rb
## 更改如下
 13 external_url 'https://gitlab.example.com'  13行左右
952 nginx['redirect_http_to_https'] = true
964 nginx['ssl_certificate'] = "/etc/gitlab/ssl/gitlab.example.com.crt"
965 nginx['ssl_certificate_key'] = "/etc/gitlab/ssl/gitlab.example.com.key"

初始化gitlab相关服务配置:

gitlab-ctl  reconfigure

重启 gitlab:

gitlab-ctl  restart
12.浏览器登录 gitlab

五:Gitlab 开发代码提交处理流程

1.公司代码提交合并流程

PM(项目主管/项目经理)在gitlab创建任务,分配给开发人员

开发人员领取任务后,在本地使用git clone拉取代码库

开发人员创建开发分支(git checkout -b dev),并进行开发

开发人员完成之后,提交到本地仓库(git commit )

开发人员在gitlab界面上申请分支合并请求(Merge request)

PM在gitlab上查看提交和代码修改情况,确认无误后,确认将开发人员的分支合并到主分支(master)

开发人员在gitlab上Mark done确认开发完成,并关闭

  • 22
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值