如何快速部署gitlab,git+docker+jenkins+gitlab(1)

2023年 9月 3日 110.3k 0

前言

因为目前我实习的项目经常和仓库,docker,gitlab打交道,同时为了巩固这些相关知识,特此开这个专栏。一方面是做记录,另一方面就是回忆,应该会分2-3期。

目的:如何快速的部署个人的仓库,同时因为是部署到docker上的,也方便迁移和部署。

本期目的:

1.了解git是什么,因为git是一切的前提,git是如何进行通信,这部分应该比较快的过一遍
2.如何安装gitlab,同时通过网页进行访问
3.如何生成一个上述的镜像。

1.git是什么?

1.1定义

  • Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。Git是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。

  • 我们之前背过的八股也知道,git其实就是个分布式管理仓库的一个系统,除了git其实还有svm也是进行代码管理,但是因为不是分布式管理,也逐渐被淘汰。还有一点八股常背就是,git通过乐观锁的思想来实现冲突控制。

1.2 启动环境

  • 这里我采用docker的方式,来启动两个容器,一个作为git server,一个作为git client,命令如下,用ubuntu的也行,centos也行,甚至gitlab也提供一个自身的镜像。

ps:当然我这里为了模拟从0开始,就用ubuntu作为我的底层image。后续也可以将命令集成到dockerfile来build image,这里我为了集图就一步步来了

  • 第一步,启动容器:
  • # 1.如果没有docker环境先预装一个,这里我省略了,直接拉取ubuntu镜像
    docker pull ubuntu
    # 2.起两个容器
    docker run -it -p 12345:80 --privileged --name git-server1 ubuntu /bin/bash
    docker run -it --name git-client1 ubuntu /bin/bash
    

    图片.png
    启动成功,这里的参数就不解释了哈。-p是为了后面gitlab服务器启动之后将80端口,通过nginx转发到宿主机上进行访问。

  • 安装git,安装vi,后面要修改文件,如果觉得下载慢可以换个源啥的。
  • # 1.update
    apt-get update
    # 2.安装
    apt-get install vim git -y
    # 3. check
    git version #显示有东西就是安装成功
    

    3.在服务器端git-server1的容器进行操作,类似创建一个服务器上的仓库,来给客户端进行访问和拉取

    • 这一步主要是为了设置用户组,因为一般我们在服务器会进行权限划分,一般不会在root用户下进行操作,这里我设置一个叫git的用户,同时创建了一个名叫example的仓库
    useradd git
    passwd git
    mkdir /git-root/
    cd /git-root/
    git init --bare example.git
    
    • 这一步,是提权给git用户组,因为我之前都是在root用户下操作,这里也是我之前经常犯错的点,用户权限不对就可能导致一些问题。
    chown -R git:git example.git/
    

    图片.png

    • 这一步,是进入git用户,生成密钥(也许是公钥?),这里是不是很熟悉,https的相关知识,需要注意的点是,通过useradd 方式是不会生成用户目录的,需要手动创建
    mkdir /home/git
    chown -R git:git git/
    mkdir /home/git/.ssh
    su - git #不报错,什么都不显示就表示进入了,因为linux的思想就是不显示就是成功
    ssh-keygen -t rsa
    

    图片.png
    成功!

    • 复制公钥文件多一份,叫authorized_keys,这里主要是为了给后面客户端进行免密登录用的
    #如果还在git下,切换回root
    exit
    cd /home/git/.ssh
    cp id_rsa.pub authorized_keys
    apt-get install openssh-server
    service ssh status
    service ssh start
    

    4.客户端操作,客户端就简单了,但是还是会有一点坑

    • 生成密钥
    # 需要知道两台容器的ip地址,因为一般的ubuntu纯净版是没有的,需要自己安装
    apt-get install net-tools -y
    ifconfig -a
    ssh-keygen #一路回车
    ssh-copy-id git@{服务端ip}
    #输入密码
    

    图片.png
    5.拉仓库

    git clone git@{server ip}:/git-root/example.git
    

    图片.png
    配置用户名等信息,主要就是name和email,然后就是老生常谈的add commit push

    git config --global user.name "test"
    git config --global user.email "test@test.com"
    

    图片.png
    可以看到,新的push已经有了,但是我很奇怪的是,服务端竟然没办法感知,这个我后面在研究一下
    图片.png
    小结:学会了如何部署一个本地的简单git!(后面会补充如果再加一个client2,看能不能感知到这次的变化)

    2.gitlab部署

    先咕咕,后面补

    相关文章

    JavaScript2024新功能:Object.groupBy、正则表达式v标志
    PHP trim 函数对多字节字符的使用和限制
    新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
    使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
    为React 19做准备:WordPress 6.6用户指南
    如何删除WordPress中的所有评论

    发布评论