GitLab是一个基于Git的代码托管和协作平台,提供了从代码管理到持续集成/持续部署(CI/CD)的全方位 DevOps功能。本文为您介绍如何在Linux系统的ECS实例上部署GitLab,搭建属于您自己的代码托管平台。
快速部署
您可以单击一键运行进入Terraform Explorer查看并执行Terraform代码,从而实现自动化地在ECS实例中部署GitLab代码托管平台。
准备工作
请确保您已创建一台ECS实例,并且ECS实例必须满足以下条件:
-
操作系统:Linux系统。具体支持的系统说明,请参见Supported OSes。
-
实例已分配固定公网IP地址或绑定弹性公网IP(EIP)。如您不清楚如何开通公网,请参见开通公网。
-
实例规格:安装GitLab所需的实例规格与项目规模和团队规模有关,建议最小规格为4 vCPU、8 GiB。更多信息,请参见Installation system requirements和Running GitLab in a memory-constrained environment。
重要低于4 vCPU、8 GiB会因规格过小,导致长时间处于Installing状态或安装失败。请升级规格以后再安装,升级规格操作,请参见升降配方式概述。
安装GitLab
GitLab版本包括企业版(EE)、社区版(CE)和极狐版(JH)。极狐GitLab(极狐版JH)是在中国内地与中国香港、中国澳门发行的企业级GitLab版本,极狐GitLab的服务器都在中国境内,网络访问速度更快。极狐版和社区版的对比和说明请参见is-it-any-good和why-jh。
方式一:使用安装包
社区版本和极狐版本在安装命令和支持的操作系统上存在差异。
方式二:使用Docker镜像
方式三:使用ECS扩展程序
ECS扩展程序是用于增强和扩展ECS实例功能的插件。Alibaba Cloud Linux 3系统会安装极狐GitLab,其他系统会安装GitLab社区版。
进入GitLab管理页面
-
在浏览器输入网址。访问网址:
http://${ECS的公网IP}。重要如果使用Docker镜像方式安装,并将HTTP的默认端口80映射成非标准端口,请在访问链接后添加该端口号。
-
首次登录使用用户名
root,通过如下方式获取密码。获取GitLab的登录密码。在ECS实例执行以下命令:
-
Linux安装包方式:
sudo cat /etc/gitlab/initial_root_password -
Docker安装方式:
sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
回显信息类似如下所示,您可以在
Password后获取GitLab的初始登录密码。
重要出于安全原因,24小时后该文件会被自动删除。建议您安装成功首次登录之后,修改GitLab的初始密码,操作步骤参见reset_user_password。

-
-
进入Admin页面。

-
在Users>Pending approval页面审批新用户的申请。其他操作例如管理项目、管理用户等,请参见admin_area。

注册用户并设置免密访问
-
访问GitLab页面。单击Sign in按钮下的Register now,创建一个新用户。等待GitLab管理员通过申请后,使用新创建的用户登录GitLab。
-
在本地生成密钥对文件。
ssh-keygen生成密钥对的过程中,系统会提示输入密钥对存放目录(默认为当前用户目录下的
.ssh/id_rsa,例如/home/test/.ssh/id_rsa)和密钥对密码,您可以手动输入,也可以按Enter保持默认。回显信息类似如下所示。

-
查看并复制公钥文件
id_rsa.pub中的内容,便于后续步骤使用。cat ~/.ssh/id_rsa.pub回显信息类似如下所示。
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDQVwWjF3KXmI549jDI0fuCgl+syJjjn55iMUDRRiCd/B+9TwUda3l9WXH5i7RU53QGRCsDVFZxixLOlmXr9E3VSqkf8xXBnHs/5E2z5PIOCN0nxfB9xeA1db/QxPwK4gkHisep+eNHRn9x+DpCYDoSoYQN0nBg+H3uqfOqL42mJ+tqSfkyqbhjBf1kjtDTlBfVCWtI0siu7owm+c65+8KNyPlj5/0AyJ4Aqk1OX2jv+YE4nTipucn7rHwWuowasPU86l+uBsLNwOSb+H7loJvQyhEINX2FS1KnpRU+ld20t07n+N3ErfX5xBAGfxXpoN9BKKSP+RT7rvTeXTVE**** test@iZuf63zs0dn0qccsisy**** -
添加SSH key。将获取的公钥添加到GitLab账户中,以便进行免密码的身份验证。
-
单击页面右上角的头像,然后单击Edit profile。

-
在左侧导航栏,单击SSH Keys。将公钥文件
id_rsa.pub中的内容粘贴到Key所在的文本框中,然后单击Add key。
-
SSH Key添加完成后,如下图所示。

-
创建项目并托管代码
创建新项目
-
在GitLab的主页中,单击页面右侧的New Project按钮,然后单击Create blank project。

-
单击Create blank project,设置Project name和Project URL,然后单击页面底部的Create project。本文以mywork项目为例进行说明。

-
回到项目页面,复制SSH克隆地址,该地址在进行克隆操作时需要使用。

克隆远程仓库
-
sudo yum install git -
在本地配置使用Git仓库的人员信息。
-
配置使用Git仓库的用户名。
git config --global user.name "testname" -
配置使用Git仓库的人员邮箱。
git config --global user.email "abc@example.com"
-
-
克隆已创建的项目到本地。
-
输入
git clone并粘贴SSH克隆地址,Git会自动创建一个以仓库名称命名的文件夹并下载文件。git clone ${SSH URL}如果使用Docker镜像安装,需要在链接中添加
ssh://和docker run命令中的映射端口,例如:重要如果不想修改SSH链接,需要修改
gitlab_rails['gitlab_shell_ssh_port']参数,以便在GitLab页面中正确显示,请参见使用Docker方式启动时,提示22端口被占用。git clone ssh://git@{IP域名}:{SSH端口}/root/mywork
-
进入到项目目录。
cd mywork/ -
查看当前分支的名称,默认为主分支
main。git branch
-
新建分支并进行更改
在本地创建新的分支,便于更改文件。
-
新建一个分支
example。git checkout -b example -
新建需要上传到GitLab中的目标文件
test.txt,并写入内容Hello World!。echo "Hello world!" > test.txt
提交并推送更改
将新分支example推送到远程仓库进行保存。
-
将
test.txt文件添加到暂存区。git add test.txt -
确认变更的文件。
git status获得以下输出:
On branch example Changes to be committed: (use "git restore --staged <file>..." to unstage) modified: test.txt -
提交暂存文件
test.txt。git commit -m "测试用" -
example分支目前只在本地可用。将分支推送到GitLab仓库,便于其他人访问。git push origin example -
推送到GitLab仓库后,其他用户也可以查看新建的分支。

合并更改
将本地example 分支的更改合并到主分支 main,然后将合并后的主分支 main推送到远程仓库。
-
切换到主分支
main。git checkout main -
将新建分支
example合并到主分支main。git merge example -
将合并后的主分支推送到GitLab仓库。
git push -
变更已同步到GitLab仓库的主分支
main中。

























