前言
GitLab是一个开源的代码托管平台,从项目规划到持续集成、持续部署,再到监控和安全,GitLab都能提供一站式的解决方案。GitLab提供社区版和企业版。社区版完全免费。用户可以在自己的服务器上部署 GitLab 实例,确保数据安全和隐私。
目录:
一、GitLab 安装 (Ubuntu)
1. 安装依赖包
sudo apt update
sudo apt install -y curl openssh-server ca-certificates postfix
在 postfix
邮件服务器安装过程中,将出现一个配置窗口。选择 Internet Site
并输入服务器的hostname
作为邮件服务器名称(默认为计算机名称),这将允许 GitLab 发送电子邮件通知。
2. 添加 GitLab Apt Repository
curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
该 curl 命令会添加 GitLab 存储库。自动检测你的 Ubuntu 版本后设置相应的存储库。不同系统架构的储存库可以在官网https://packages.gitlab.com/gitlab/gitlab-ce/install
中找到(例如deb/rpm…)
3. 安装 GitLab 并配置
① 安装 GitLab
sudo apt install gitlab-ce
命令行输出GitLab的logo以及 Thank you for installing GitLab!
后说明安装成功。此时会生成配置文件:"/etc/gitlab/gitlab.rb"
,在这个配置文件里面可以配置访问域名、发送邮件等设置。初始默认用户名为root
,初始密码储存在/etc/gitlab/initial_root_password
文件中。
→ 软件相关指令
# 停止gitlab服务
sudo gitlab-ctl stop
# 重启gitlab
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
sudo gitlab-ctl start
# 启用开机自启动
sudo systemctl enable gitlab-runsvdir.service
② 配置 GitLab 地址
sudo nano /etc/gitlab/gitlab.rb
找到external_url字段,改成自己需要设置的IP和端口号。例如:external_url '192.168.1.123:8011'
。保存后退出。
③ 修改 GitLab 默认密码
#切换路径
cd /opt/gitlab/bin/
#打开控制台
sudo gitlab-rails console -e production
#查询用户账号信息并赋值给u
u=User.where(id:1).first
#设置root的密码
u.password='yourpassword'
#确认密码
u.password_confirmation='yourpassword'
#保存信息(注意有个感叹号)
u.save!
#退出
exit
4. 访问 GitLab Web 界面
在同一局域网内的任意设备的浏览器中输入②中设置的external_url:
192.168.1.123:8011
#用户名
root
#密码
yourpassword
【注意】: 如果您的 ubuntu 系统上启用了操作系统防火墙,那么需要允许 http(80) 端口。
sudo ufw allow http
如果想用https
访问,可以参考:https://zhuanlan.zhihu.com/p/650541864
中的(6) 为 GitLab Web 设置 HTTPS
部分
【Web界面设置中文】: 在侧边栏的头像处(+号旁边)选择 Preferences
→ Language
选项中选择简体中文 → Save changes
→ 刷新界面
二、创建仓库 & 远程访问与连接
基本概念
- 仓库(Repository):Git仓库是存储文件和其历史记录的地方。可以在本地计算机上创建一个仓库,也可以使用Git托管服务(如GitHub)上的远程仓库。
- 分支(Branch):分支是仓库的不同版本,可以同时进行不同的开发工作。创建新分支可以保持原有代码的不变性,可以在新分支上进行实验、修复错误等操作,最后将修改合并到主分支上。
- 远程仓库(Remote Repository):远程仓库是存储在远程服务器上的Git仓库,用于团队成员之间的协作开发和文件同步。
2.1 创建项目仓库
根据具体项目需求在Gitlab Web UI中创建代码仓库和分支。下面给出一个例子:
创建一个名为testproject
的仓库,创建后默认包含一个main
分支(受保护分支,只有管理员可以修改),并新创建了一个dev
分支。权限设置为private
。
📜 GitLab项目的三种访问权限(可以在项目页面左侧的设置
→通用
→ 可见性
中修改)
- private:只有组成员可以看到。
- internal:只要登录的用户就能看到。
- public:开源的所有的人都可以看到。
此时项目地址为http://192.168.1.123:8011/root/testproject.git
2.2 远程访问仓库
如果Gitlab所在计算机有公网IP并且开放了相应的端口,那么所有人都可以直接在浏览器输入项目地址http://192.168.1.123:8011/root/testproject.git
进入Gitlab Web界面(如果没有,2.4章节会给出内网穿透对应的办法)。新用户在首次进入Gitlab Web界面时需要注册账号,具体流程如下:
Step1: 在Web UI的`Sign in`下方点击`Register now`进行用户注册
Step2: 注册之后会显示需要管理员批准,联系管理员进行批准
Step3: 管理员登陆root账户批准申请:
在主页左下角点击`管理员` → 点击`查看最新的用户` → 找到显示等待批准的用户 → 点击右侧三个点 → 批准
注册后进入项目地址会显示没有权限(并且进入自己的个人主页也会发现没有对应项目),这是因为项目是private
权限,所以需要管理员将你的账号添加进群组才能进入并且在你的主页看到项目,具体步骤如下:
管理员进入项目页面 → 在左侧找到`管理` → `成员` → 邀请成员 → 选择`角色`
✨GitLab用户在组中有如下几种角色:
- Guest(访客):可以创建issue、发表评论、不能推送代码或修改仓库
- Reporter(报告者):可以克隆代码(只读),不能推送代码或修改仓库
- Developer(开发者):可以推送代码到非受保护分支、可以提出Merge Request
- Maintainer(维护者):推送&管理受保护分支/标签、管理项目成员(添加/移除)
- Owner(拥有者):可以设置项目的访问权限、删除/迁移项目、管理组成员
2.3 内网穿透远程访问仓库
在没有公网IP时,用户可以根据自己的需求寻找合适的内网穿透软件或者自己搭建内网穿透服务实现外网访问,这里以cpolar
内网穿透软件为例给出对应的配置方法。
① 安装cpolar:参考官方安装教程安装https://www.cpolar.com/docs
② 创建隧道:这里给出简略步骤,如果遇到问题可以自行寻找详细教程
Step1:在浏览器输入本机ip地址+9200端口(例如:192.168.1.123:9200)登录管理界面
Step2:点击左侧仪隧道管理——创建http协议隧道,端口设置为Gitlab端口(例如:8011)
Step3:如果购买了套餐建议设置二级子域名,否则映射地址会一直改变
Step4:左侧状态选项——在线隧道列表 查看映射的公网地址(或在cpolar官网的仪表盘查看)
③ 远程访问仓库:
远程仓库的本地地址为http://192.168.1.123:8011/root/testproject.git
,此时将http://192.168.1.123:8011
更换为映射后的公网地址(例如:http://111.vip.cpolar.top
),就得到了项目对应的公网地址: http://111.vip.cpolar.top/root/testproject.git
【此后所有外网访问时都需要将Gitlab仓库的本地地址对应片段更换为映射的公网地址】
2.4 本地仓库连接远程仓库
【Gitlab刚创建的仓库通常是空的,可以clone下来添加你的代码后再连接,或者直接使用本地已经有代码的仓库进行连接,此时需要保证本地仓库名称与远程仓库一致】
下面的步骤默认已经创建好了一个本地仓库
(详细步骤可以参考Git的使用教程:Git使用手册)
(cd)进入文件夹,执行以下命令:
# 初始化用户信息(只需要配置一次,以后无需配置)
git config --global user.name "Gitlab注册时的用户名"
git config --global user.email "Gitlab注册时的邮箱"
# 连接远程仓库
git remote add origin http://xxx.git
# git remote -v 查看连接状态
# git remote rm origin 清除连接
# git remote set-url origin http:xxx.git 重置为新的连接
# 拉取代码(首次连接需要先pull一次与远程仓库的状态进行同步)
# 输入拉取代码指令后需要输入用户名密码,输入Gitlab网页注册时的用户名和密码即可
git pull origin dev
# 对齐本地仓库与远程仓库分支
# 查看本地仓库当前分支
git branch
# 创建与远程仓库相同的分支(例如dev)
git branch dev
# 切换到对应分支
git checkout dev
完成上述步骤后进行正常开发即可,需要将本地仓库代码推送到远程仓库时,直接使用git push
进行推送即可,具体步骤可以参考Git使用教程:Git使用手册