GitLab

Git服务器

一、概念

  • C/S 架构的 Git 服务端
  • 是存放代码的公用平台
  • 是多人并行协作的核心部分
  • 通常单独部署在一台独立的服务器上
  • 客户端可以通过网络访问服务器上的仓库

GitLab搭建

一、部署

1、安装依赖包

[root@GitLab ~]# yum -y install policycoreutils-python-utils.noarch

2、安装gitlab-ce包

[root@GitLab ~]# rpm -ivh --nodeps --force gitlab-ce-12.4.6-ce.0.el7.x86_64.rpm
[root@GitLab ~]# rpm -qa | grep gitlab
gitlab-ce-12.4.6-ce.0.el7.x86_64

3、GitLab配置

# 重载GitLab应用配置
[root@GitLab ~]# gitlab-ctl reconfigure
...
Running handlers:
Running handlers complete
Chef Client finished, 527/1423 resources updated in 02 minutes 05 seconds
gitlab Reconfigured!

# 重启GitLab相关服务
[root@GitLab ~]# gitlab-ctl restart
ok: run: alertmanager: (pid 1975) 0s        //报警服务
ok: run: gitaly: (pid 1986) 1s              //Git后台服务
ok: run: gitlab-exporter: (pid 2014) 0s     //Prometheus数据采集器
ok: run: gitlab-workhorse: (pid 2020) 1s    //反向代理服务器
ok: run: grafana: (pid 2117) 0s             //数据可视化服务
ok: run: logrotate: (pid 2129) 0s           //日志文件管理服务
ok: run: nginx: (pid 2135) 1s               //静态WEB服务
ok: run: node-exporter: (pid 2142) 0s       //Prometheus数据采集器
ok: run: postgres-exporter: (pid 2148) 1s   //Prometheus数据采集器
ok: run: postgresql: (pid 2159) 0s          //数据库服务
ok: run: prometheus: (pid 2168) 0s          //Prometheus监控服务
ok: run: redis: (pid 2178) 1s               //缓存数据库服务
ok: run: redis-exporter: (pid 2183) 0s      //Prometheus数据采集器
ok: run: sidekiq: (pid 2192) 0s             //异步执行队列服务
ok: run: unicorn: (pid 2203) 0s             //Rails托管WEB服务

GitLab使用

一、GitLab初始化

管理员用户初始化

  • 管理员用户为root
  • 首次登陆需设置管理员密码
  • 登陆方式为浏览器访问
# GitLab主机确认80端口被监听
[root@GitLab ~]# ss -anptul | grep :80
tcp   LISTEN 0      511          0.0.0.0:80        0.0.0.0:*    users:(("nginx",pid=11166,fd=7),("nginx",pid=11165,fd=7),("nginx",pid=11164,fd=7))  
[root@GitLab ~]# 

二、GitLab使用

1、用户管理

  • 可以通过用户管理创建多个用户
  • 可以设置用户权限

2、组管理

  • 当用户非常多时可以将用户进行分组
  • 可以对组进行权限控制
  • 可以对组内用户身份控制

3、项目管理

  • 服务器上可以托管多个项目(仓库)

  • 可以设置项目归属

  • 可以对不同的项目做权限控制

代码托管

一、GitLab与Git客户端关联

1、关联Git服务器与客户端

关联 Programer 主机的 myproject 仓库与 GitLab 服务器上创建的 myproject 项目

# 参考提示命令"推送已有Git仓库部分"
[root@Programer ~]# cd myproject/
# 查看远程仓库关联信息
[root@Programer myproject]# git remote -v
# 关联远程项目
[root@Programer myproject]# git remote add origin http://192.168.88.20/devops/myproject.git
# 查看远程仓库关联信息
[root@Programer myproject]# git remote -v
origin  http://192.168.88.20/devops/myproject.git (fetch)
origin  http://192.168.88.20/devops/myproject.git (push)
# 推送本地仓库所有分支
[root@Programer myproject]# git push -u origin --all
Username for 'http://192.168.88.20': mark       #用户名
Password for 'http://mark@192.168.88.20':       #密码
枚举对象中: 29, 完成.
对象计数中: 100% (29/29), 完成.
使用 2 个线程进行压缩
压缩对象中: 100% (19/19), 完成.
写入对象中: 100% (29/29), 2.21 KiB | 2.21 MiB/s, 完成.
总共 29(差异 5),复用 0(差异 0),包复用 0
remote: 
remote: To create a merge request for feature, visit:
remote:   http://gitlab.example.com/devops/myproject/merge_requests/new?merge_request%5Bsource_branch%5D=feature
remote: 
remote: To create a merge request for hotfix, visit:
remote:   http://gitlab.example.com/devops/myproject/merge_requests/new?merge_request%5Bsource_branch%5D=hotfix
remote: 
To http://192.168.88.20/devops/myproject.git
 * [new branch]      feature -> feature
 * [new branch]      hotfix -> hotfix
 * [new branch]      master -> master
分支 'feature' 设置为跟踪来自 'origin' 的远程分支 'feature'。
分支 'hotfix' 设置为跟踪来自 'origin' 的远程分支 'hotfix'。
分支 'master' 设置为跟踪来自 'origin' 的远程分支 'master'。

# 推送本地仓库所有标签
[root@Programer myproject]# git push -u origin --tags
Username for 'http://192.168.88.20': mark       #用户名
Password for 'http://mark@192.168.88.20':       #密码
总共 0(差异 0),复用 0(差异 0),包复用 0
To http://192.168.88.20/devops/myproject.git
 * [new tag]         v1 -> v1

二、关联后效果展示

三、客户端免密推送

1、配置HTTP访问免密推送

#每次推送都需要认证,可以设置免密推送
    #store:永久存储
    #cache:默认缓存15分钟,期间无需认证,可通过cache --timeout=3600设置超时时间
    #git remote add origin http://name:pass@192.168.88.20/devops/myproject.git
[root@Programer myproject]# git config --global credential.helper store #持久保存
[root@Programer myproject]# git push                        #推送代码(本次需要认证)
Username for 'http://192.168.88.20': mark   #用户名
Password for 'http://mark@192.168.88.20':   #密码
Everything up-to-date
[root@Programer myproject]# git push                        #再次推送测试免密
Everything up-to-date
[root@Programer myproject]# git config --list
user.name=mark
user.email=mark@tedu.cn
init.defaultbranch=master
credential.helper=store
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
remote.origin.url=http://192.168.88.20/devops/myproject.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.feature.remote=origin
branch.feature.merge=refs/heads/feature
branch.hotfix.remote=origin
branch.hotfix.merge=refs/heads/hotfix
branch.master.remote=origin
branch.master.merge=refs/heads/master
[root@Programer myproject]# cat ~/.git-credentials 
http://mark:1234.com@192.168.88.20
相关推荐
贾贾202329 分钟前
配电自动化系统“三区四层”数字化架构
运维·科技·架构·自动化·能源·制造·智能硬件
小池先生2 小时前
grafana+prometheus监控linux指标
linux·grafana·prometheus
浮梦终焉2 小时前
【嵌入式】总结——Linux驱动开发(三)
linux·驱动开发·qt·嵌入式
远方 hi2 小时前
linux如何修改密码,要在CentOS 7系统中修改密码
linux·运维·服务器
练小杰3 小时前
Linux系统 C/C++编程基础——基于Qt的图形用户界面编程
linux·c语言·c++·经验分享·qt·学习·编辑器
资讯分享周3 小时前
过年远控家里电脑打游戏,哪款远控软件最好用?
运维·服务器·电脑
chaodaibing4 小时前
记录一次k8s起不来的排查过程
运维·服务器·k8s
mcupro4 小时前
提供一种刷新X410内部EMMC存储器的方法
linux·运维·服务器
不知 不知5 小时前
最新-CentOS 7 基于1 Panel面板安装 JumpServer 堡垒机
linux·运维·服务器·centos
BUG 4045 小时前
Linux--运维
linux·运维·服务器