一、部署gitlab

这里使用的是Centos8,安装Docker环境 ,这里不说了,参考:https://www.cnblogs.com/wei325/p/15139701.html

gitlab有ce版和ee版,ce版为免费版本;ee版为企业版本,需要收费;这里用ce版。

1)拉取Gitlab镜像

docker pull gitlab/gitlab-ce

2)启动Docker

  先建3个目录用于把gitlab的文件挂载出来

#安装程序目录
mkdir -p /home/gitlab/etc
#数据目录
mkdir -p /home/gitlab/opt
#日志目录
mkdir -p /home/gitlab/log

启动docker

docker run \
-itd \
-p 8180:80 \
-p 8122:22 \
-v /home/gitlab/etc:/etc/gitlab \
-v /home/gitlab/log:/var/log/gitlab \
-v /home/gitlab/opt:/var/opt/gitlab \
--restart always \
--privileged=true \
--name gitlab \
gitlab/gitlab-ce

8180端口:gitlab管理页面端口

8122端口:SSH端口,拉代码时的端口

  -v xxx:把Docker里面的目录映射到本机上

查看启动的gitlab

3)修改配置

docker安装gitlab,创建项目时,默认项目URL访问地址显示的是容器主机地址(容器id),所以我们需要修改为一个固定可以外部访问的地址及宿主机地址,这样才可以进行pull/push代码

vi /home/gitlab/etc/gitlab.rb

# 取消external_url注释,地址为宿主机地址,不需要设置端口
external_url 'http://1.15.63.120' #ssh主机ip
gitlab_rails['gitlab_ssh_host'] = '1.15.63.120'
#ssh连接端口
gitlab_rails['gitlab_shell_ssh_port'] =8122 # 重载服务
[root@vanje-dev01 ~]# docker exec -t gitlab gitlab-ctl reconfigure
[root@vanje-dev01 ~]# docker exec -t gitlab gitlab-ctl restart

 4)修改root密码

启动docker后,gitlab已经能访问了,但还没有设置密码

# 进入容器内部
docker exec -it gitlab /bin/bash
# 进入控制台
gitlab-rails console -e production
# 查询id为1的用户,id为1的用户是超级管理员
user = User.where(id:1).first
# 修改密码为root123456
user.password='root123456'
# 保存
user.save!
# 退出
exit

设置完再去登录,就能登录成功了!

 5)服务器卡顿问题解决

这里用的是腾讯云服务器,2核4G,因为gitlab会用比较多的内存和cpu,这个配置装了后服务器变得卡顿,解决办法。

1、创建swap分区

#查看swap分区情况,如果看到没有东西就是没有swap分区
cat /proc/swaps
#创建swap分区,注意:创建swap大小为bs*count=4294971392(4G),/data/swap目录若无则找/mnt/swap
dd if=/dev/zero of=/data/swap bs=512 count=8388616
#把上文件的文件做成swap分区
mkswap /data/swap
#cat /proc/sys/vm/swappiness,如果不是60,则设置
sysctl -w vm.swappiness=60
#启用swap分区
swapon /data/swap
echo “/data/swap swap swap defaults 0 0” >> /etc/fstab
#再次查看swap分区
cat /proc/swaps

2、修改配置把进程数据变少

在挂载出来的本机文件上改,目录为/home/gitlab/etc/gitlab.rb,修改完重启容器生效

vi /home/gitlab/etc/gitlab.rb
#把下面3个取消注释,工作进程减少,最低为2
puma['worker_processes'] = 2
puma['min_threads'] = 2
puma['max_threads'] = 2 # 重载服务
[root@vanje-dev01 ~]# docker exec -t gitlab gitlab-ctl reconfigure
[root@vanje-dev01 ~]# docker exec -t gitlab gitlab-ctl restart

做完这些,服务器占用资源就降下来了,也不会卡顿了。

二、使用gitlab

1)设置关闭自动创建账号功能

gitlab默认是开放注册账号功能的,在企业里面使用是不允许的,用户的账号是通过管理员创建出来的

管理员登录进后台

 2)创建项目

3)创建用户,组群,给项目权限

把用户test加入到Test.Demo的项目里面

成功把用户加了进来

GitLab用户权限管理:

GitLab用户在组中有五种权限:Guest、Reporter、Developer、Maintainer、Owner

1.Guest:可以创建issue、发表评论、不能读写版本库

2.Reporter:可以克隆代码,不能提交,QA、PM可以赋予这个权限

3.Developer:可以克隆代码、开发、提交、push、研发人员可以赋予这个权限

4.Maintainer:可以创建项目、添加 tag 、保护分支、添加项目成员、编辑项目、核心研发负责人可以赋予这个权限

5.Owner:可以设置项目的访问权限-Visibility Level、删除项目、迁移项目、管理组成员、项目经理,部门经理可以赋予这个权限

三、Git拉取和提交GitLab代码

1)安装git客户端

官网地址:https://git-scm.com/downloads/

下载后,一直下一步安装即可。安装完成后,桌面鼠标右键能看到如下图的两个菜单

2)git生成SSH Key

git客户端要连接仓库,就要先生成ssh key,ssh key有公钥和私钥,生成后把公钥填到git站点上,现在生成ssh key

点击Git Bash Here

2.1设置用户名

git config --global user.name 'test'

test为自己的用户名,可以随便填,注意提交记录的时候会显示这个用户名,所以一般填员工的姓名好辨认谁提交了代码

2.2设置邮箱

git config --global user.email 'test@qq.com'

这个邮箱也是可以随便填,一般填员公在公司的邮箱

上两步生成的信息会在C:\Users\账号 下生成.gitconfig配置文件,特别注意此文件不能删除,此文件记录了账号和邮箱。

2.3生成ssh key

ssh-keygen -t rsa -C “test@qq.com”

填刚才的邮箱,输入后一直回车即可

生成的ssh key信息保存在 C:\Users\账号下的.ssh文件夹里

3)把生成的公钥填到gitlab

git客户端要和gitlab连接,需要把公钥里面的内容填到gitlab上

回到gitlab,每个员工都会有独立的ssh key,这里我登录test账号,表示把本机的git和test账号关联

4)拉取项目和提交文件

4.1克隆项目

找到项目的ssh地址,也可以通过http地址

在本机上建一个文件夹放拉取的项目,在文件夹的路径里打开 Git Bash

git clone ssh地址

第一次拉取时会报一个无法验证主机真实性,输入yes,然后会在 ssh key的文件夹下的kenown_hosts里面生成gitlab信息,下次就不会询问了。

克隆完成后,可以看到项目已经被拉下来了,因为是一个空项目,所以还没有东西,只有一份描述文档

 4.2提交文件

我们新增加一个文件 abc.txt

现在的文件是在工作区,然后把文件add到暂存区

#把文件添加到暂存区
git add *
#查看文件变化状态
git status

 4.3提交文件到本地仓库

#提交修改到本地仓库
git commit -m '提交一个文本文档'

4.4把本地仓库同步到远程仓库

因为这里是一个main分支,developer不能推送到main分支,所以这里给一下maintainer权限给test用户。正常企业里面开发,开发人员只有开发分支(dev),

测试分支(test)的权限,main分支只能看,不能提交代码的,因为main分支要保持着随时能发布,不能签提交代码,要由项目负责人从测试分支(test)合并 代码到main分支。

推送代码

git push

这里把本地仓库同步到远程仓库,到远程仓库看一下就能看到提交记录了

如果想拉取最新的代码,则用git pull

到这里gitlab部署和使用就完成了,git如果命令行方式觉得麻烦,则可以用小乌龟git的界面可视化操作

小乌龟git下载地址为:https://tortoisegit.org/download

其余的开发IDE也都会自带有git插件,这个就不多说啦。

企业级GitLab在Docker部署使用的更多相关文章

  1. Gitlab CI 自动部署 asp.net core web api 到Docker容器

    为什么要写这个? 在一个系统长大的过程中会经历不断重构升级来满足商业的需求,而一个严谨的商业系统需要高效.稳定.可扩展,有时候还不得不考虑成本的问题.我希望能找到比较完整的开源解决方案来解决持续集成. ...

  2. Ubuntu & GitLab CI & Docker & ASP.NET Core 2.0 自动化发布和部署(1)

    相关博文: Ubuntu 简单安装和配置 GitLab Ubuntu 简单安装 Docker Ubuntu Docker 简单安装 GitLab Ubuntu Docker 安装和配置 GitLab ...

  3. Ubuntu & GitLab CI & Docker & ASP.NET Core 2.0 自动化发布和部署(2)

    上一篇:Ubuntu & GitLab CI & Docker & ASP.NET Core 2.0 自动化发布和部署(1) 服务器版本 Ubuntu 16.04 LTS. 本 ...

  4. Windows 下 docker 部署 gitlab ci

    一.安装 1. 安装 docker Docker下载 注意:Windows 10 家庭版获取 之前的版本不能直接安装 Docker ,而是需要去安装 Docker Toolbox 我这里安装的是 Do ...

  5. docker部署gitlab

    Docker部署gitlab 一.前提条件 (1)     存在docker (2)     服务器可以联网(外网) (3)     服务器内存至少4G(内存不够会出现502错误) 内存不足502错误 ...

  6. 基于Ubuntu下以Docker方式gitlab软件的部署

    基于Ubuntu下以Docker方式gitlab软件的部署 目录 基于Ubuntu下以Docker方式gitlab软件的部署 1.安装Docker Compose 1.1 下载curl 1.2 安装c ...

  7. 万字干货! 使用docker部署jenkins和gitlab

    阅读本文, 需要有基础的Git, Linux, Docker, Java, Maven, shell知识, 并最少有一台内存16G以上并已经安装好了Docker的机器. 1. 概述 2. 容器互联 3 ...

  8. 使用Docker部署Gitlab

    由于公司的代码server已使用Gitosis搭建,但由于用户和权限管理太麻烦. 如今想在原有server上再搭建Gitlab,使用Gitlab官方方法直接安装. 会导致与Gitosis冲突,使得Gi ...

  9. Ubuntu 18.04 使用docker 部署gitlab并且使用自定义端口号

    搭建原因 两个月前我搭建了公司的docker(无法自定义端口,),当初只想着把托管在GitHub的项目代码放在公司的服务器上面,后来忙着修改人脸服务器代码,忘记了,这个月由于领导提的需求比较多,还是托 ...

  10. docker gitlab迁移 备份 部署 搭建以及各种问题

    当前环境 服务器A 服务器B ubuntu docker gitlab(版本一致) docker安装gitlab 由于考虑到gitlab 包含了⾃身的nginx.数据库.端⼝占⽤等等因数,这⾥使⽤的是 ...

随机推荐

  1. 有关二级指针char **p 的问题

    int main() { char *str[] = {"welcome", "to", "Fortemdia", "Nanjin ...

  2. 【云原生 · Kubernetes】runtime组件

    个人名片: 因为云计算成为了监控工程师‍ 个人博客:念舒_C.ying CSDN主页️:念舒_C.ying runtime组件 8.1 部署cri-o组件 8.2 下载二进制文件 8.3 修改配置文件 ...

  3. win7修改开机动画

    开机动画的修改 首先win7的过场动画是存在于C:\Windows\System32\bootres.dll ,而修改过程动画就需要修改这个dll,我不会改,所以只能用工具美化大师,软媒魔方里面的一个 ...

  4. 「Goravel 上新」用户授权模块,让你简单的对非法用户 Say No!

    首先,让我们定义一个规则:用户只能访问自己创建的文章. facades.Gate.Define("update-post", func(ctx context.Context, a ...

  5. 【Shell脚本案例】案例5:找出CPU/内存率占用高的进程

    一.背景 找出占用高的进程 使用脚本编写找出占用CPU的进程 二.分析 1.查看进程 top 输入后按C,就可以列出 其他: ps aux 2.思路 awk进行排序,如top10 即ps aux |a ...

  6. node版本管理工具fnm踩坑

    我建议是直接不要用fnm,还是老老实实用nvm吧 fnm下下来电脑防火墙会报毒(用github上推荐的cargo install fnm方式下载,并非第三方安装) Trojan.Generic.HgE ...

  7. Windows Terminal ssh 远程 Linux 和使用 Git

    Windows Terminal ssh 远程 Linux 和使用 Git Windows Terminal (中文:终端)是 Win11 自带的 Terminal.可以添加配置文件,然后把远程主机放 ...

  8. ChatGPT能做什么?ChatGPT保姆级注册教程

    最近 OpenAI 发布的 ChatGPT 聊天机器人很火,该聊天机器人可以在模仿人类说话风格的同时回答大量的问题. 在现实世界之中,例如数字营销.线上内容创作.回答客户服务查询,甚至可以用来帮助调试 ...

  9. 【机器学习】李宏毅——Unsupervised Learning

    读这篇文章之间欢迎各位先阅读我之前写过的线性降维的文章.这篇文章应该也是属于Unsupervised Learning的内容的. Neighbor Embedding Manifold Learnin ...

  10. 解决RockyLinux和Centos Stream 9中firefox无法播放HTML视频问题

    如题在测试两种centos后续系统时,发现firefox无法播放HTML视频问题.经过一番折腾找到了解决的办法,具体解决如下: 首先下载VLC $sudo yum install vlc 而后重启浏览 ...