华为云 Flexus X 云服务器携手 GitLab,为开发者和企业带来了云端部署的全新选择。Flexus X 实例以其灵活高效的柔性算力,结合 GitLab 强大的版本控制、CI/CD 等功能,为企业打造高效、安全的研发环境。正值 828 华为云企业上云节,我们一同体验这一强强联合的云端解决方案。Flexus X 的高性价比与 GitLab 的先进项目管理工具,将助您实现快速上云、高效开发,推动企业数字化进程加速前行。
链接直达 : 华为云Flexus云服务器X实例
GitLab 是一个开源的一体化 DevOps 平台,具有代码托管、代码审查、持续集成与持续部署(CI/CD)、问题跟踪、Wiki 和文档管理以及安全与权限管理等功能。它提供安全可靠的代码存储仓库,支持强大的分支管理和标签功能;允许团队成员进行代码审查和评论,跟踪代码变更历史;内置 CI/CD 工具,可定义各种任务阶段;用于记录和跟踪问题、缺陷和任务,并支持分配、设置优先级和截止日期等;允许创建和维护项目文档和 Wiki 页面;提供细粒度的权限控制和多种身份验证方式,还具有安全审计功能。总之,GitLab 能帮助团队提高代码质量,实现高效的协作和项目管理。
官方网站:https://about.gitlab.com/
[root@flexusx-251f ~]# docker pull gitlab/gitlab-ce
Using default tag: latest
latest: Pulling from gitlab/gitlab-ce
857cc8cb19c0: Pull complete
2abc51628ee2: Pull complete
a098af47633d: Pull complete
79eb1bbe5e7f: Pull complete
45c3937be5ff: Pull complete
052407fbe787: Pull complete
a57c8c923e60: Pull complete
65ef322a34d3: Pull complete
807b20aca09b: Pull complete
Digest: sha256:9e0d464e7c5fc03e29af190802708fd9270136ef0c423dba8ee7ad1f8480ea48
Status: Downloaded newer image for gitlab/gitlab-ce:latest
docker.io/gitlab/gitlab-ce:latest
3001 做管理页面端口,3002 做 ssh 端口,拉去项目代码使用
[root@flexusx-251f ~]# mkdir -p /gitlab/etc
[root@flexusx-251f ~]# mkdir -p /gitlab/opt
[root@flexusx-251f ~]# mkdir -p /gitlab/log
[root@flexusx-251f ~]# docker run -itd \
-p 3001:80 \
-p 3002:22 \
-v /gitlab/etc:/etc/gitlab \
-v /gitlab/log:/var/log/gitlab \
-v /gitlab/opt:/var/opt/gitlab \
--restart always \
--privileged=true \
--name gitlab \
gitlab/gitlab-ce:latest
ad00474916beb674b2bd3da2e29018d739247252bd5f1612d94c711a4729f5a1
查看容器运行状态
[root@flexusx-251f ~]# docker ps | grep git
ad00474916be gitlab/gitlab-ce:latest "/assets/wrapper" 7 seconds ago Up 6 seconds ( health: starting ) 443/tcp, 0.0.0.0:3002->22/tcp, :::3002->22/tcp, 0.0.0.0:3001->80/tcp, :::3001->80/tcp gitlab
docker 安装 gitlab,创建项目时,默认项目 URL 访问地址显示的是容器主机地址(容器 id),所以我们需要修改为一个固定可以外部访问的地址及宿主机地址,这样才可以进行 pull/push 代码
[root@flexusx-251f ~]# vim /gitlab/etc/gitlab.rb
# 大概在 32 行,取消 external_url 注释,地址为宿主机地址,不需要设置端口
32 # external_url 'GENERATED_EXTERNAL_URL'
33 external_url 'http://123.249.27.118'
# 大概在 69 行,修改为 ssh 主机 ip
67 # gitlab_rails['gitlab_ssh_host'] = 'ssh.host_example.com'
68 gitlab_rails['gitlab_ssh_host'] = '123.249.27.118'
# 大概在 700 行,修改 ssh 连接端口
700 # gitlab_rails['gitlab_shell_ssh_port'] = 22
701 gitlab_rails['gitlab_shell_ssh_port'] = 3002
点击左侧导航栏 projects,点击 create a project
点击 create blank project,创建一个空项目
自定义项目名称(project name),选择组或者命名空间,能见度生产环境一般为私有的,我们在这也选择 private,之后点击 create project
创建项目成功
点击左下角设置 admin,选择 new user
输入用户名、邮箱信息
创建成功,点击 edit 进行编辑设置密码
输入完成,点击 save changes
将用户加入到项目中来,进入项目,点击左侧导航栏 Manage,点击二级菜单 Members,之后点击右上角 invite members
选择用户,选择角色,并设置过期时间,之后点击 invite
添加成功
wangwu 用户登录进行测试,首次登入需要修改密码
在该用户可以看到之前创建的项目,已经有了对应的权限
在华为云实例上安装 git
[root@flexusx-251f ~]# yum install -y git
git 客户端要连接仓库,就要先生成 ssh key,ssh key 有公钥和私钥,生成后把公钥填到 git 站点上,现在生成 ssh key
设置用户名
• admin01 为自己的用户名,可以随便填,注意提交记录的时候会显示这个用户名
[root@flexusx-251f ~]# git config --global user.name 'admin01'
设置邮箱
• 这个邮箱也是可以随便填,一般填员公在公司的邮箱
[root@flexusx-251f ~]# git config --global user.email 'admin01@qq.com'
生成 ssh key
• 输入命令之后,一直默认回车即可
[root@flexusx-251f ~]# ssh-keygen -t rsa -C "admin01@qq.com"
Generating public/private rsa key pair.
Enter file in which to save the key ( /root/.ssh/id_rsa ) :
Enter passphrase ( empty for no passphrase ) :
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa
Your public key has been saved in /root/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:dYROjGaOek4RJcFLmlau+NkmX9MXe7wDUh4QQk2GP1M admin01@qq.com
The key's randomart image is:
+---[RSA 3072]----+
| .o+++o. || =.=o.E |
| * B +.o. |
| + = ..=.o |
| o o .S =.. |
| . o o .. o+ |
| . * o ..o.o |
| + +. . . ... |
| +. .. |
+----[SHA256]-----+
[root@flexusx-251f ~]# cd /root/.ssh/
[root@flexusx-251f .ssh]# ls
authorized_keys id_ed25519 id_ed25519.pub id_rsa id_rsa.pub
把生成的公钥填写在 gitlab 的 wangwu 用户中
查看公钥并写入 key 中
[root@flexusx-251f .ssh]# cat id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDHHXiSuHbfab8EzQ0B6zTOPNPF5HyISXh8Ldl5u5mNAx17M9ib7C36EHFxNtYnVSNbnn2cIeP6hOXXfNhDmGgg9PGHzAzuXj8rOBegEeY9F1Lg2NF1zbnnmiwzKmgkBukicQuQlqcn1m3L6pA4V9eIj7WDrUt2sHjyhaPLb3AktxYR44PvN2aaOmAZQhv858gePGFJnbmYVVK6nIDa+xEm/kas/wIQoSvYQfeyPTWpCB6M1y6lqpkmdBciv57PYBd9s2vJD/Guf77BSNHM2dFNt/IB/P+bo2pu/r0qoRyb7HtIfM4igUlYuu+G5Q8LshemnSd5kCm9SOKaJJ99ovabwyWSA5PjGFr5guDMRx7UA/+4NKboMjlKbIrhRkkcaINp9UK97s7LBZWs/a+A9GExz9EWtyIIXpzyEquLov1T1LlmYTsaip/c7bIalkfn4Q6sxNk3hSsnujYlS5Q5nAkv06AO9Hu2SNHyLiSGcmWg9yYZOsOHZz/8MCVFIx0Wc2s= admin01@qq.com
找到项目的 ssh 地址,也可以通过 http 地址
创建文件夹并拉取文件
[root@flexusx-251f ~]# mkdir code
[root@flexusx-251f ~]# cd code/
[root@flexusx-251f code]# git clone ssh://git@123.249.27.118:3002/root/my_java_project01.git
Cloning into 'my_java_project01'...
The authenticity of host '[123.249.27.118]:3002 ([123.249.27.118]:3002)' can't be established.
ED25519 key fingerprint is SHA256:L0vK441j2nwCcNuZegnkiAcWe2TIjjGLJrLOE7GzAEQ.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[123.249.27.118]:3002' (ED25519) to the list of known hosts.
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
Receiving objects: 100% (3/3), done.
[root@flexusx-251f code]# ls
my_java_project01
创建一个新文件,并写内容
[root@flexusx-251f code]# cd my_java_project01/
[root@flexusx-251f my_java_project01]# ls
README.md
[root@flexusx-251f my_java_project01]# echo 11111 > 1.txt
[root@flexusx-251f my_java_project01]# cat 1.txt
11111
将文件添加到暂存区
[root@flexusx-251f my_java_project01]# git add *
[root@flexusx-251f my_java_project01]# git status
On branch main
Your branch is up to date with 'origin/main'.
Changes to be committed:
( use "git restore --staged <file>..." to unstage )
new file: 1.txt
提交文件到本地仓库
[root@flexusx-251f my_java_project01]# git commit -m '提交一个文档'
[main 6512959] 提交一个文档
1 file changed, 1 insertion ( + )
create mode 100644 1.txt
通过 root 用户,修改 wangwu 用户角色,因为开发人员不可进行提交,只能查看 master 分支
推送代码到项目
[root@flexusx-251f my_java_project01]# git push
Enumerating objects: 4, done.
Counting objects: 100% ( 4/4 ) , done.
Delta compression using up to 4 threads
Compressing objects: 100% ( 2/2 ) , done.
Writing objects: 100% ( 3/3 ) , 290 bytes | 290.00 KiB/s, done.
Total 3 ( delta 0 ) , reused 0 ( delta 0 ) , pack-reused 0
To ssh://123.249.27.118:3002/root/my_java_project01.git
42ac110..6512959 main -> main
这里把本地仓库同步到远程仓库,到远程仓库看一下就能看到提交记录了
在追求高效协作与持续创新的数字化时代,GitLab 作为领先的 DevOps 平台,为企业提供了从代码托管到 CI/CD 的一站式解决方案。而今,华为云 Flexus X 服务器的出现,更是为 GitLab 的云端部署开启了新篇章。
华为云 Flexus X 实例以其卓越的算力性能、灵活的扩展能力和稳定可靠的服务质量,成为了 GitLab 云端部署的理想选择。它不仅支持高并发访问,确保团队协作的流畅无阻,还通过智能的资源调度,帮助企业优化成本结构,实现资源的最大化利用。
在 828 华为云企业上云节这个节日里,让我们一起走进云端世界,Flexus X 实例的高可用性和 GitLab 的丰富功能相互补充,将为团队带来前所未有的开发效率和协作体验。点击下方链接,立即行动,享受专属优惠,让 Flexus X 与 GitLab 携手助力您的企业数字化转型之路,这一完美结合将引领您走向更加辉煌的未来!
产品链接 : 华为云Flexus云服务器X实例直播建站服务器-华为云