写点什么

云端代码管理新体验,华为云 Flexus X 实例上 GitLab 部署与使用的实战指南

作者:轶天下事
  • 2025-01-06
    海南
  • 本文字数:4337 字

    阅读完需:约 14 分钟

前言****

华为云 Flexus X 云服务器携手 GitLab,为开发者和企业带来了云端部署的全新选择。Flexus X 实例以其灵活高效的柔性算力,结合 GitLab 强大的版本控制、CI/CD 等功能,为企业打造高效、安全的研发环境。正值 828 华为云企业上云节,我们一同体验这一强强联合的云端解决方案。Flexus X 的高性价比与 GitLab 的先进项目管理工具,将助您实现快速上云、高效开发,推动企业数字化进程加速前行。


链接直达 华为云Flexus云服务器X实例


gitlab 介绍****

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**

在华为云实例上安装 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实例直播建站服务器-华为云



用户头像

轶天下事

关注

还未添加个人签名 2022-07-30 加入

还未添加个人简介

评论

发布
暂无评论
云端代码管理新体验,华为云Flexus X实例上GitLab部署与使用的实战指南_轶天下事_InfoQ写作社区