前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >丝滑的代码管理

丝滑的代码管理

作者头像
悟空聊架构
发布2023-09-01 11:14:46
1570
发布2023-09-01 11:14:46
举报

本文主要内容如下:

一、背景

最近需要修改一个很重要的项目源码,但是这个源码的代码仓库权限又不能给我们,只给了一份拷贝的版本,为了能够更好地对这份代码进行代码版本管理,我决定在本地搭建一个 Gitlab 仓库,来和其他同事进行协同开发。

二、环境依赖

1、本地部署一台 Ubuntu 虚拟机

2、Ubuntu Docker 环境

3、能否访问 docker hub 网络(如果不能访问,用离线方式安装 Gitlab 也可以)

三、部署 Gitlab

3.1 采用 docker compose 方式启动 Gitlab 容器

  • 拉取 Gitlab 镜像
  • 编写 docker-compose.yml 文件
  • 启动 Gitlab 容器

(如果你不喜欢用 docker compose 方式,也可以直接用 docker run 的方式启动 Gitlab 容器。)

3.1.1 拉取 Gitlab 镜像
代码语言:javascript
复制

SH
docker pull gitlab/gitlab-ee:latest
3.1.2 编写 docker-compose.yml 文件

创建一个 docker-compose.yml 文件:

代码语言:javascript
复制

sh
vim docker-compose.yml

内容如下:

代码语言:javascript
复制

yml
    version: '3.3'
    services:
      web:
        image: 'gitlab/gitlab-ee:latest'
        restart: always
        hostname: 'gitlab.example.com'
        environment:
          GITLAB_OMNIBUS_CONFIG: |
            external_url 'https://gitlab.example.com'
        ports:
          - '8000:80'
          - '8443:443'
          - '2222:22'
        volumes:
          - '/home/wukong/gitlab/config:/etc/gitlab'
          - '/home/wukong/gitlab/logs:/var/log/gitlab'
          - '/home/wukong/gitlab/data:/var/opt/gitlab'
        shm_size: '256m'

配置说明:

  • version: '3.3':指定了 Docker Compose 文件的版本。
  • services::指示接下来定义服务部分的开始。
  • web::这是服务的名称,可以自定义。在这个示例中,服务名为 "web"。
  • image: 'gitlab/gitlab-ee:latest':指定要使用的 Docker 镜像。在这里,使用了 gitlab/gitlab-ee 镜像的最新版本。
  • restart: always:指定容器的重新启动策略为始终重新启动。
  • hostname: 'gitlab.example.com':设置容器的主机名为 "gitlab.example.com"。
  • environment::定义容器内的环境变量。
  • GITLAB_OMNIBUS_CONFIG: |:这是一个环境变量的名称,其值是一个多行字符串,表示 GitLab 配置文件的内容。
  • external_url 'https://gitlab.example.com':在 GitLab 配置文件中设置 GitLab 的外部 URL 为 "https://gitlab.example.com"。
  • ports::定义容器与主机之间的端口映射关系。
  • '8000:80':将容器的 80 端口映射到主机的 8000 端口。
  • '8443:443':将容器的 443 端口映射到主机的 8443 端口。
  • '2222:22':将容器的 22 端口(SSH)映射到主机的 2222 端口。
  • volumes::定义容器内的数据卷挂载关系。
  • '/home/tss/gitlab/config:/etc/gitlab':将主机上的 /home/tss/gitlab/config 目录挂载到容器内的 /etc/gitlab 目录。
  • shm_size: '256m':设置容器的共享内存大小为 256MB。

还需要在 Ubuntu 上创建一些文件夹:

  • /home/wukong/gitlab/config
  • /home/wukong/gitlab/logs
  • /home/wukong/gitlab/data
3.1.3 启动容器

在文件 docker-compose.yml 的所在的目录下执行以下命令启动 Gitlab 容器并查看容器状态:

代码语言:javascript
复制

sh
docker-compose up -d
docker ps

等几分钟后,容器状态会从 starting 状态变为 healthy 状态。

更多配置和部署方式详见官网文档:

代码语言:javascript
复制


https://docs.gitlab.com/ee/install/docker.html

3.2 访问 Gitlab

可以通过 Ubuntu 虚拟机的 IP 的方式来访问 Gitlab 网站,也可以通过域名的方式来访问Gitlab 网站。

用浏览器打开 Gitlab 网站打开后如下所示:

3.2.1 通过 IP 访问

浏览器直接打开如下地址:

代码语言:javascript
复制

sh
https://<虚拟机 IP 地址>:8443/
3.2.2 通过域名访问

host 配置:

代码语言:javascript
复制

sh
<虚拟机 IP 地址> gitlab.example.com

浏览器打开如下地址:

代码语言:javascript
复制

sh
https://gitlab.example.com:8443/

3.3 修改 root 密码

打开 Gitlab 网站后,就会让你登录,即使你选择注册,也需要等管理员审批通过才能登录。所以我们首先得用管理员账号登录,但是我们是不知道账号密码的,所以需要先修改管理员的密码。

  • 1.查看运行的容器ID
代码语言:javascript
复制

SH
sudo docker ps
  • 2.进入容器
代码语言:javascript
复制

SH
sudo docker exec -it <容器 ID>  /bin/bash
  • 3.进入 gitlab的 bin 目录
代码语言:javascript
复制

SH
cd /opt/gitlab/bin
  • 4.执行 gitlab-rails console
代码语言:javascript
复制

SH
gitlab-rails console
  • 5.找到 root 的用户
代码语言:javascript
复制

SH
u=User.where(id:1).first

因为 root 用户的 id 是默认用户,所以 id 为 1。

  • 6.修改 password
代码语言:javascript
复制

SH
u.password='passjava'
  • 7.修改确认密码
代码语言:javascript
复制

SH
u.password\_confirmation='passjava'
  • 8.保存修改

输入u.save,然后回车,等到输出 true,这时,密码修改成功。

代码语言:javascript
复制

SH
u.save

密码修改成功后,退出容器,然后回到登录页面,输入用户名和密码即可登录管理员账号。用户名:root,密码:passjava。

四、测试 Gitlab 功能

4.1 注册用户

在注册页面填写用户信息,注册成功后需要等待管理员审批。

管理员审批界面

4.2 测试 创建 Group 和 Project

管理员创建 Group
管理员创建的 Project

添加用户到这个仓库里面。

代码语言:javascript
复制

sh
https://gitlab.example.com:8443/test-group/passjava/-/project_members

4.3 添加 SSH Key

用户登录成功后,可以看到自己的 passjava 项目,不过还需要添加 SSH Key 才能 push 或 pull 项目。

如果本地没有 SSH key,则可以参考下面这个链接生成 SSH Key。

代码语言:javascript
复制


https://gitlab.example.com:8443/help/ssh/index#generate-an-ssh-key-pair

4.4 用户 clone 项目

clone 仓库到本地

代码语言:javascript
复制

sh
git clone https://gitlab.example.com:8443/test-group/passjava.git
或
git clone https://192.168.56.12:8443/test-group/passjava.git

提示输入密码,输入用户名和密码:

4.4 提交代码到 Gitlab 仓库

附录:离线安装 Gitlab

代码语言:javascript
复制

sh
docker pull gitlab/gitlab-ee:latest

打包测试环境的 gitlab镜像,这个命令会将服务器上 gitlab 镜像打包成 tar 包,这样我们就方便拷贝到其他服务器上了。执行打包镜像命令:

代码语言:javascript
复制


sudo docker save -o gitlab-ee.tar gitlab/gitlab-ee:latest

因为保存的 tar 包权限不够,所以设置下权限为 777。执行修改权限的的命:

代码语言:javascript
复制

sh
    sudo chmod 777 gitlab-ee.tar

将这个 tar 包拷贝新环境的三台服务器上。执行导入镜像的命令:

代码语言:javascript
复制

sh
sudo docker load -i gitlab-ee.tar

然后按照第三章的 3.1.2 和 3.1.3 内容启动容器。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-07-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 悟空聊架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、背景
  • 二、环境依赖
  • 三、部署 Gitlab
    • 3.1 采用 docker compose 方式启动 Gitlab 容器
      • 3.1.1 拉取 Gitlab 镜像
      • 3.1.2 编写 docker-compose.yml 文件
      • 3.1.3 启动容器
    • 3.2 访问 Gitlab
      • 3.2.1 通过 IP 访问
      • 3.2.2 通过域名访问
    • 3.3 修改 root 密码
    • 四、测试 Gitlab 功能
      • 4.1 注册用户
        • 4.2 测试 创建 Group 和 Project
          • 管理员创建 Group
          • 管理员创建的 Project
        • 4.3 添加 SSH Key
          • 4.4 用户 clone 项目
            • 4.4 提交代码到 Gitlab 仓库
              • 附录:离线安装 Gitlab
              相关产品与服务
              容器服务
              腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档