赞
踩
今天先不更数据库了,这两天也在网上看了一些搭建gitlab的方法,自己去搭建了一下,写一下算是比较完整的搭建步骤(还有简单使用)吧
欢迎评论补充//(^v^)//
目录
gitlab是一款开源的代码仓库管理系统,它结合了Git作为代码管理和Web服务的特点。该平台支持自托管的Git项目仓库,可以通过Web界面对公众或私人项目进行访问。GitLab的核心功能包括代码仓库管理、项目管理、持续集成等,旨在简化软件开发过程中的协作流程。
特点:
使用Ruby on Rails框架构建,快速且安全稳定。
支持团队内部的代码和文档管理,适用于软件开发中的群组和工程项目。
提供免费的公共和私有存储库、问题跟踪和Wiki功能。
允许用户通过Web界面访问和管理项目,无需下载客户端软件。
版本信息:
有Community Edition(CE),这是一个完全免费的版本,适合个人和小团队使用。
Enterprise Edition(EE),是为企业和大型组织定制的商业版本。
Operations Managed(OM),这是包含了额外软件的完整版,如nginx、redis等,通常是通过RPM包提供。
与其他平台的比较:
与GitHub相比,GitLab提供了相似的功能,并且可以管理团队的访问权限,同时提供文件的版本历史库。
除了代码仓库管理的核心功能,还包括议题、持续集成、Wiki等其他项目管理模块。
gitlab下载链接(选择ce完全免费的版本):gitlab/gitlab-ce - Packages · packages.gitlab.com
选择版本前先查看一下虚拟机版本信息:
- test@ubuntu:~$ lsb_release -a
- No LSB modules are available.
- Distributor ID: Ubuntu
- Description: Ubuntu 20.04 LTS
- Release: 20.04
- Codename: focal
ubuntu20.04选择gitlab-ce_16.5.8-ce.0_amd64.deb ubuntu/focal
ps:ubuntu/focal 适用于 ubuntu 20系列,ubuntu/bionic 适用于 ubuntu 18 系列
复制命令进入ubuntu系统中拉取deb(联网,嗯不开代理拉取很慢。。。)
sudo wget --content-disposition https://packages.gitlab.com/gitlab/gitlab-ce/packages/ubuntu/focal/gitlab-ce_16.5.8-ce.0_amd64.deb/download.deb
sudo dpkg -i gitlab-ce_16.5.8-ce.0_amd64.deb
ps:安装deb文件时报了一个错,以下是我的解决步骤,找到锁文件并杀掉占用进程,解决
- dpkg: error: dpkg frontend lock is locked by another process
- test@ubuntu:~$ sudo lsof /var/lib/dpkg/lock
- lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
- Output information may be incomplete.
- lsof: WARNING: can't stat() fuse file system /run/user/1000/doc
- Output information may be incomplete.
- COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
- unattende 111740 root 11uW REG 8,5 0 677189 /var/lib/dpkg/lock
- test@ubuntu:~$ kill -9 111740
- -bash: kill: (111740) - Operation not permitted
- test@ubuntu:~$ sudo kill -9 111740
- test@ubuntu:~$ sudo rm /var/lib/dpkg/lock
- test@ubuntu:~$ sudo dpkg --configure -a
安装完成
我们来先了解一下常用命令
- #gitlab配置文件位置
- /etc/gitlab/gitlab.rb
-
- #停止gitlab
- sudo gitlab-ctl stop
-
- #重载gitlab配置文件
- sudo gitlab-ctl reconfigure
-
- #重启所有gitlab组件
- sudo gitlab-ctl restart
-
- #启动所有gitlab组件
- sudo gitlab-ctl start
-
- #查看运行状态
- sudo gitlab-ctl status
-
- #开机自启
- sudo systemctl enable gitlab-runsvdir.service
修改ip、优化、时区设置可以一起修改配置文件然后重载配置文件就可以了,我是分开演示
sudo gitlab-ctl reconfigure的操作可以放在配置完了一起做,开机自启也可以最后做
修改配置文件gitlab.rb,搜索注释掉的nginx['listen_port'],修改为****端口(端口与上面external_url 的端口保持一致;域名的话本机需要配映射,没配就用本机ip访问)
- sudo vim /etc/gitlab/gitlab.rb
-
- #在32行,修改成自己需要的
- external_url '192.168.0.120:10099'
-
-
- #1.在1654行
- nginx['listen_port'] = 10099
- #2.也可以用sed直接修改(2选1)
- sudo sed -i "s/^.*nginx\['listen_port'\].*$/nginx['listen_port'] = 10099/" /etc/gitlab/gitlab.rb
保存并重新载入配置文件
sudo gitlab-ctl reconfigure
设置开机自启动
sudo systemctl enable gitlab-runsvdir.service
查看gitlab状态,出现以下内容就算成功
- test@ubuntu:~$ sudo gitlab-ctl status
- run: alertmanager: (pid 62969) 42s; run: log: (pid 61070) 65s
- run: gitaly: (pid 62846) 45s; run: log: (pid 50013) 156s
- run: gitlab-exporter: (pid 62887) 44s; run: log: (pid 59350) 82s
- run: gitlab-kas: (pid 50636) 147s; run: log: (pid 50821) 144s
- run: gitlab-workhorse: (pid 62795) 45s; run: log: (pid 58273) 102s
- run: logrotate: (pid 49155) 171s; run: log: (pid 49321) 169s
- run: nginx: (pid 58396) 98s; run: log: (pid 58428) 97s
- run: node-exporter: (pid 62840) 45s; run: log: (pid 59047) 89s
- run: postgres-exporter: (pid 62996) 42s; run: log: (pid 61302) 60s
- run: postgresql: (pid 50142) 153s; run: log: (pid 50493) 150s
- run: prometheus: (pid 62946) 43s; run: log: (pid 59905) 71s
- run: puma: (pid 57713) 116s; run: log: (pid 57866) 113s
- run: redis: (pid 49547) 165s; run: log: (pid 49714) 162s
- run: redis-exporter: (pid 62899) 44s; run: log: (pid 59611) 77s
- run: sidekiq: (pid 58025) 110s; run: log: (pid 58053) 109s
我将配置了内存优化运行与没有优化之间做个如图对比,gitlab还是很占内存的
在/etc/gitlab/gitlab.rb中添加如下内容(温馨提示:vim中两次GG(shift+gg)跳转最后一行)
- # 减少数据库缓存
- postgresql['shared_buffers'] = "64MB"
- # 减少数据库并发数
- postgresql['max_worker_processes'] = 4
- # 禁用puma cluster模式,可以减少100-400MB占用
- puma['worker_processes'] = 0
- # 减少sidekiq并发数
- # sidekiq['concurrency'] = 2
- sidekiq['max_concurrency'] = 2
- # 禁用监控
- prometheus_monitoring['enable'] = false
- # 减少gitlab_rails组件的内存消耗
- gitlab_rails['env'] = {
- 'MALLOC_CONF' => 'dirty_decay_ms:500,muzzy_decay_ms:500'
- }
保存然后重新载入配置文件,设置完成
sudo gitlab-ctl reconfigure
gitlab默认时区是UTC,我们要改成中国的时区(如有需要)
sudo vim /etc/gitlab/gitlab.rb
输入
/# gitlab_rails
= 'UTC'′timezone′
查找该行,然后将注释去掉,UTC改成Asia/Shanghai
保存然后重新载入配置文件,设置完成
sudo gitlab-ctl reconfigure
访问刚才配置文件里配置的域名端口(电脑没配置映射,用ip直接访问了。。)
接下来我们登录,默认会创建root用户,密码在/etc/gitlab/initial_root_password
该密码会在24小时后失效,所以后面会修改密码
- test@ubuntu:~$ sudo cat /etc/gitlab/initial_root_password
- # WARNING: This value is valid only in the following conditions
- # 1. If provided manually (either via `GITLAB_ROOT_PASSWORD` environment variable or via `gitlab_rails['initial_root_password']` setting in `gitlab.rb`, it was provided before database was seeded for the first time (usually, the first reconfigure run).
- # 2. Password hasn't been changed manually, either via UI or via command line.
- #
- # If the password shown here doesn't work, you must reset the admin password following https://docs.gitlab.com/ee/security/reset_user_password.html#reset-your-root-password.
-
- Password: HXdPbUm1fk+5GogEzffBgNEj5DPWUf6853THOUPnsZA=
-
- # NOTE: This file will be automatically deleted in the first reconfigure run after 24 hours.
用root和密码登录
点击头像,选择偏好
以下设置好然后点save changes保存,然后刷新页面即可
点击头像然后切换旧版导航栏(新版没找到管理员在哪儿。。。)
切换旧版后,点击如图图标,点击管理员
选择用户,然后编辑(添加新用户的界面也在这儿)
输入密码即可
然后要求重新登录
添加用户页面操作有两种方式
管理员中点击用户然后点击新用户
设置好名称用户名电子邮箱、访问级别和其他选项后点击创建即可
ps:邮箱我随意设置的(我没用到邮箱);如果内网要使用邮箱的话,请搭建邮箱服务器
然后再次点击用户,进行修改密码的操作
保存更改,然后我们使用test用户进行登录,新用户登录仍需要重设置密码(可以与旧密码相同)
设置完成,然后我们返回root用户
创建完成后需要管理员用户来进行批准才可使用
点击用户然后找到等待批准,点击批准,然后就注册完成可以使用了
如果不希望除管理员外的人员创建用户,则可以进行以下操作
将通用设置中的注册限制,启用注册功能的勾给去掉(记得向下滑找到点击保存修改!)
返回登录界面,登录界面的注册功能已去除
点击群组,然后新建群组
设置群组名称,选择可见性,其它设置可选,然后点击新建即可完成
点击刚才创建的群组
点击邀请同事,然后输入用户名即可
在管理员中选择群组,找到管理权限
选择权限
权限说明
Guest(访客):
Reporter(报告者):
Developer(开发者):
Maintainer(维护者):
Owner(所有者):
创建好群组后然后点击新建空白项目,设置好项目名称、可见性和其它设置点击新建即可
创建好项目后,当前会有一个main主分支,我们可以选择新建分支,然后输入分支名称即可
现在就有两个分支了
我们点击仓库,分支,然后点击查看分支规则
找到受保护分支,这里我们可以选择添加保护的分支;可以设置角色权限来对分支保护
设置完成即可(我这里让test分支可以让开发者进行上传与合并,main分支则不让开发者进行合并)
注:对于项目的管理,可以设置主分支只让主要管理者才可以合并,其他开发人员创建自己的分支进行上传代码和合并代码,要与主分支合并可以提出合并请求经过审核才能合并
选择windows,下载好后都默认直接安装即可
选择自己要上传的代码目录下,右键鼠标选择open Git Bash here(安装好git后自动会有)
然后去项目中查找http链接,复制链接
在刚才打开的git bash终端设置用户名、邮箱
- #设置用户名、邮箱为gitlab上设置的邮箱
- git config --global user.name "yourname@yourgilab.com"
- git config --global user.email "youremail@yourgitlab.com"
设置好然后git config --global --list查看
然后输入
- #刚才复制的http链接
- git clone http://192.168.0.120:10099/kaifa_group/test_project.git
然后cd进目录
将我们要上传的代码放入这个文件夹(test_project)
然后把目录下的所有文件上传到git
git add .
提交信息
git commit -m "你的描述"
推送项目到GitLab
git push <链接(orgin是别名)> <本地仓库>:<远程分支>
git push origin main:test_branch
去网页分支中查看一下,上传成功
在刚才已有的克隆的目录下,新增一个txt作为测试
右键打开git bash
输入git status我们可以看到红色的未上传的部分
git init初始化
上传文件(和第一次上传一样)git add .
提交信息
git commit -m "你的描述"
推送项目到GitLab
git push origin main:test_branch
上传完成
之前对于主分支我们只允许Maintainers可以上传与合并,而对test_branch分支则允许了developer上传和合并,从这里可以看出test用户(developer)是无法上传主分支的(推送到远程存储库时被拒绝,预接收钩子 (pre-receive hook) 强制执行某些策略或检查,以确保不允许对存储库进行不合规的更改)
可以使用sourcetree管理分支上传代码
算是卸载干净了,再次安装也没有问题
- #停止gitlab
- sudo gitlab-ctl stop
-
- #卸载服务
- sudo gitlab-ctl uninstall
-
- #清除相关数据
- sudo gitlab-ctl cleanse
-
- #清除账号数据
- sudo gitlab-ctl remove-accounts
-
- #删除安装包
- sudo dpkg -P gitlab-ce
-
- 查询剩余文件进行删除
- find / -name "gitlab"
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。