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

举报
wzsのcloud 发表于 2024/10/29 23:02:33 2024/10/29
【摘要】 华为云Flexus X云服务器携手GitLab,为开发者和企业带来了云端部署的全新选择。

前言

华为云Flexus X云服务器携手GitLab,为开发者和企业带来了云端部署的全新选择。Flexus X实例以其灵活高效的柔性算力,结合GitLab强大的版本控制、CI/CD等功能,为企业打造高效、安全的研发环境。
链接直达:华为云Flexus云服务器X实例

image.png

gitlab介绍

GitLab 是一个开源的一体化 DevOps 平台,具有代码托管、代码审查、持续集成与持续部署(CI/CD)、问题跟踪、Wiki 和文档管理以及安全与权限管理等功能。它提供安全可靠的代码存储仓库,支持强大的分支管理和标签功能;允许团队成员进行代码审查和评论,跟踪代码变更历史;内置 CI/CD 工具,可定义各种任务阶段;用于记录和跟踪问题、缺陷和任务,并支持分配、设置优先级和截止日期等;允许创建和维护项目文档和 Wiki 页面;提供细粒度的权限控制和多种身份验证方式,还具有安全审计功能。总之,GitLab 能帮助团队提高代码质量,实现高效的协作和项目管理。

官方网站:https://about.gitlab.com/

image.png

环境规划

操作系统 git gitlab docker docker-compose 连接方式
Huawei Cloud EulerOS 2.0 2.33.0 gitlab/gitlab-ce 27.1.1 2.29.1 本地==shell==

部署流程

拉取镜像

[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
 
 # 重新启动容器
[root@flexusx-251f ~]# docker restart gitlab

测试访问

配置安全组,放行端口号:3001,3002

image.png

浏览器地址栏输入:http://主机IP:3001

image.png

查看root密码

用户名root用户进行登录

# 查看root密码
[root@flexusx-251f ~]# docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
Password: d8CuKk5ULxD8sVPS8dT8Z3C5/rGEXDsQNkMiJAoK2C8=

也可以进行root密码修改再进行登录

[root@flexusx-251f ~]# docker exec -it gitlab /bin/bash

root@ad00474916be:/# gitlab-rails console -e production
--------------------------------------------------------------------------------
 Ruby:         ruby 3.1.5p253 (2024-04-023 revision 1945f8dc0e) [x86_64-linux]
 GitLab:       17.3.2 (951fd632abf) FOSS
 GitLab Shell: 14.38.0
 PostgreSQL:   14.11
------------------------------------------------------------[ booted in 21.74s ]
Loading production environment (Rails 7.0.8.4)
irb(main):001:0> user = User.where(id:1).first
=> #<User id:1 @root>
irb(main):002:0> user.password='abc123456'
=> "abc123456"
irb(main):003:0> user.save!

输入用户名和密码进行登录

image.png

登录成功

image.png

基本使用

注册账号

输入姓名,用户名密码等信息,点击注册

image.png

root账户进行授权

image.png

image.png

进行登录

image.png

登陆成功

image.png

配置关闭注册账号功能

  • gitlab默认是开放注册账号功能的,在企业里面使用是不允许的,用户的账号是通过管理员创建出来的
  • 进入配置页面,取消勾选 sign-up enabled

image.png

创建项目

点击左侧导航栏 projects,点击 create a project

image.png

点击 create blank project,创建一个空项目

image.png

自定义项目名称(project name),选择组或者命名空间,能见度生产环境一般为私有的,我们在这也选择 private,之后点击 create project

image.png

创建项目成功

image.png

创建用户

点击左下角设置admin,选择 new user

image.png

输入用户名、邮箱信息

image.png

创建成功,点击 edit进行编辑设置密码

image.png

输入完成,点击 save changes

image.png

邀请用户

将用户加入到项目中来,进入项目,点击左侧导航栏 Manage,点击二级菜单 Members,之后点击右上角 invite members

image.png

选择用户,选择角色,并设置过期时间,之后点击 invite

image.png

添加成功

image.png

wangwu用户登录进行测试,首次登入需要修改密码

image.png

在该用户可以看到之前创建的项目,已经有了对应的权限

拉取项目

配置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

把生成的公钥填写在gitlabwangwu用户中

image.png

查看公钥并写入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

image.png

克隆项目

找到项目的ssh地址,也可以通过http地址

image.png

创建文件夹并拉取文件

[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分支

image.png

推送代码到项目

[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

这里把本地仓库同步到远程仓库,到远程仓库看一下就能看到提交记录了

image.png

体验和感受

在追求高效协作与持续创新的数字化时代,GitLab作为领先的DevOps平台,为企业提供了从代码托管到CI/CD的一站式解决方案。而今,华为云Flexus X服务器的出现,更是为GitLab的云端部署开启了新篇章。

华为云Flexus X实例以其卓越的算力性能、灵活的扩展能力和稳定可靠的服务质量,成为了GitLab云端部署的理想选择。它不仅支持高并发访问,确保团队协作的流畅无阻,还通过智能的资源调度,帮助企业优化成本结构,实现资源的最大化利用

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。