Gitlab搭建以及使用(一)

gitlab搭建

详情查看安装文档:

docs.gitlab.com/ee/install/...

本文简单介绍docker搭建和本地搭建两种方式

docker安装

安装docker

docs.docker.com/engine/inst...

这里以centos系统为例,其他系统也一样

在官方文档找到对应系统的安装介绍,然后排查一下自己的系统是否满足要求,移除旧版本docker和检查自己的内存是否充足

bash 复制代码
## 查看系统的版本信息
cat /etc/os-release  lsb_release -a 

我的系统刚好是centos7,然后系统之前没有安装docker,但是请注意,docker安装gitlab需要一定的磁盘容量,需要检查一下自己的磁盘够不够,可以通过top命令查看具体数据,如果不够,可以通过命令删除一些文件

ini 复制代码
du -ah --max-depth=1 

gitlab安装

docs.gitlab.com/ee/install/...

推荐两种安装方式,一种docker,一种本地安装(无网络)

两个前提条件:先按照前面的步骤安装好docker,还有可以访问的外部host名,我的理解就是一个可用的ip

我装的是社区版本,可以来这里查看需要安装的版本,比如我安装的是gitlab/gitlab-ce:16.10.6-ce.0,

hub.docker.com/r/gitlab/gi...

那么执行

bash 复制代码
sudo docker run --detach \
  --hostname gitlab.example.com \
  --env GITLAB_OMNIBUS_CONFIG="external_url 'http://43.159.35.99'" \
  --publish 443:443 --publish 80:80 --publish 22:22 \
  --name gitlab \
  --restart always \
  --volume $GITLAB_HOME/config:/etc/gitlab \
  --volume $GITLAB_HOME/logs:/var/log/gitlab \
  --volume $GITLAB_HOME/data:/var/opt/gitlab \
  --shm-size 256m \
  gitlab/gitlab-ce:16.10.6-ce.0即可

rpm包安装

详情可以参考这里

docs.gitlab.com/ee/update/p...

去官方网站下载安装包,社区版ce,企业版ee

packages.gitlab.com/gitlab/gitl...
packages.gitlab.com/gitlab/gitl...

然后根据自己的系统对应的 Distro/Version(系统版本)下载文件,如果不清楚el/7、el/8的可以了解下:

EL5是Red Hat 5.x,CentOS 5.x
EL6是Red Hat 6.x,CentOS 6.x
EL7是Red Hat 7.x,CentOS 7.x
EL8是Red Hat 8.x,CentOS 8.x

根据自己的系统选择对应的版本 ,比如我centos7就选择下载:

gitlab-ce-16.10.6-ce.0.el7.x86_64.rpm

bash 复制代码
*# Debian/Ubuntu*
dpkg **-i** <package_name>

*# RHEL/CentOS 7 and Amazon Linux 2*
rpm **-Uvh** <package_name>
 
*# RHEL/Almalinux 8/9 and Amazon Linux 2023*
dnf install <package_name>

*# SUSE*
zypper install <package_name>

centos就用rpm -Uvh gitlab-ce-16.10.6-ce.0.el7.x86_64.rpm进行安装

启动

本地安装

通过 指令编辑配置文件

bash 复制代码
vim /etc/gitlab/gitlab.rb

找到external_url,把自己部署gitlab的ip地址填进行并保存;注意这里的端口好,如果冲突了,需要自己重新选择一个

bash 复制代码
external_url 'http: *//IP:8080/'*

然后重新加载gitlab配置

bash 复制代码
gitlab-ctl reconfigure

如果这里提示gitlab-ctl不是命令,需要我们自己再安装下,可以参考下面:

blog.csdn.net/qq_44370158...

然后查看root默认密码:

bash 复制代码
cat /etc/gitlab/initial_root_password 

然后通过上面配置的额external_url地址和root用户密码就可以正常登录访问gitlab了

gitlab使用

有两种使用方法,一种是通过gitlab提供的可视化页面,进行用户、项目、CI/CD等的操作,这个不是本文介绍的,本文要介绍的是另一种,通过API使用;

在有的场景下,我们需要在别的系统中使用gitlab,即在某个自建系统中自动在gitlab创建对应的默认代码仓,gitlab通过接口响应创建好后的项目地址,这时候用户就可以通过提供的地址进行上传和下载代码;

gitlab提供了标准的rest格式的api接口,通过适当的鉴权模式(即token)可以正常调用;在使用过程中,我们只需要根据自己对应的安装的版本,然后选择对应接口版本就行,下面我就以我安装的16.10.6版本为例,然后鉴权方式使用的是OAuth2.0

docs.gitlab.com/ee/api/rest...

OAuth2.0

需要在gitlab管理页面创建application

Gitlab允许用户创建Applications, 这些Applications可以通过OAuth2授权来访问Gitlab的相应资源

在Gitlab中, Applications分两种:

  • 第一种是用户级别的Application, 这一般通过用户的Profile菜单进入创建

  • 第二种是系统级别的Application, 这一般只有管理员权限的人通过Admin菜单进入创建

创建好application后就获得了client_id和client_screate了,然后就可以通过标准的OAuth2.0协议接口获取到code,最后获取到access_token;

注册的application获取到access_token,也就代表通过了gitlab认证,那么就可以通过获取到代表某个gitlab用户的access_token和api对gitlab进行操作了;

上面的过程涉及到两个接口:

${external_url}表示我们配置的gitlab访问地址

GET:/oauth/authorize

url 复制代码
https://${external_url}/api/v4/oauth/authorize?client_id=APP_ID&redirect_uri=REDIRECT_URI&response_type=code&state=STATE&scope=REQUESTED_SCOPES

其中client_id可以在管理页面创建的应用中查看,然后重定向地址就是被gitlab信任的client地址,在认证通过后,会生成授权码code跳转到重定向地址,然后scope就表示在创建应用时,授予的该应用的权限,多个权限的话,用+号拼接;state可以随机填一个,是用来防止跨域伪造攻击的。

POST:/oauth/token

css 复制代码
parameters = 'client_id=APP_ID&code=RETURNED_CODE&grant_type=authorization_code&redirect_uri=REDIRECT_URI&client_secret =xxx

请求api

注意,在header头里面带上token,key为Authorization, value为Bearer拼接空格拼接上面获取到的access_token

bash 复制代码
Authorization: Bearer ${assess_token}

参考

juejin.cn/post/713550...

www.cnblogs.com/anliven/p/1...

www.cnblogs.com/cangqinglan...

相关推荐
2401_882727571 小时前
低代码配置式组态软件-BY组态
前端·后端·物联网·低代码·前端框架
ether-lin2 小时前
DevOps实战:用Kubernetes和Argo打造自动化CI/CD流程(2)
kubernetes·自动化·devops
追逐时光者2 小时前
.NET 在 Visual Studio 中的高效编程技巧集
后端·.net·visual studio
大梦百万秋2 小时前
Spring Boot实战:构建一个简单的RESTful API
spring boot·后端·restful
斌斌_____3 小时前
Spring Boot 配置文件的加载顺序
java·spring boot·后端
路在脚下@3 小时前
Spring如何处理循环依赖
java·后端·spring
vvw&3 小时前
Docker Build 命令详解:在 Ubuntu 上构建 Docker 镜像教程
linux·运维·服务器·ubuntu·docker·容器·开源
海绵波波1074 小时前
flask后端开发(1):第一个Flask项目
后端·python·flask
小奏技术5 小时前
RocketMQ结合源码告诉你消息量大为啥不需要手动压缩消息
后端·消息队列
m0_748241706 小时前
前端学习:从零开始做一个前端开源项目
前端·学习·开源