likes
comments
collection
share

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

作者站长头像
站长
· 阅读数 23

前言

因为目前我实习的项目经常和仓库,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. 第一步,启动容器:
# 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

如何快速部署gitlab,git+docker+jenkins+gitlab(1) 启动成功,这里的参数就不解释了哈。-p是为了后面gitlab服务器启动之后将80端口,通过nginx转发到宿主机上进行访问。

  1. 安装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/

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

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

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

  • 复制公钥文件多一份,叫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}
#输入密码

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

5.拉仓库

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

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

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

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

如何快速部署gitlab,git+docker+jenkins+gitlab(1) 可以看到,新的push已经有了,但是我很奇怪的是,服务端竟然没办法感知,这个我后面在研究一下 如何快速部署gitlab,git+docker+jenkins+gitlab(1)

1.3 小结

小结:学会了如何部署一个本地的简单git!(后面会补充如果再加一个client2,看能不能感知到这次的变化)

2.gitlab部署

定义

开始之前,我还是想跟大家唠唠,啥是gitlab,GitLab CE或Community Edition是一个开源应用程序,主要用于托管Git存储库,以及其他与开发相关的功能,如问题跟踪。它旨在使用您自己的基础架构进行托管,并为您的开发团队提供部署内部存储库的灵活性,与用户交互的公共方式,或者为贡献者提供托管自己项目的方法。

对于我现在就职的公司来说,他就是采用gitlab作为公司的代码管理平台,我觉得他应该有好处所以目前公司才大多采用这个平台进行代码托管。

2.1安装部署

gitlab我采用的是apt install的方式,gitlab本身自己也提供自己的镜像,如下

如何快速部署gitlab,git+docker+jenkins+gitlab(1) 下面我会按照顺序给大家讲解如何安装gitlab。

后续所有操作都是在server进行的,客户端可以先放着了。

  1. 命令行安装
#安装curl
apt-get install curl
#更新gitlab-ce包并执行,如果不做此操作,可能apt install会失败
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | bash
# 有点大,耐心等待一下
apt-get install gitlab-ce -y

出现这个经典图标就是表示安装成功了,但是按照提示sudo gitlab-ctl reconfigure需要对于gitlab配置初始化,这里有挺多坑的. 如何快速部署gitlab,git+docker+jenkins+gitlab(1) 2.reconfigure

  • 这一步第一次启动时间可能要几分钟,属于正常现象
gitlab-ctl reconfigure

出现下图就是reconfigure成功,可以看出初始账号是root,密码在下面文件夹下 如何快速部署gitlab,git+docker+jenkins+gitlab(1) 注意事项

(1).如果卡住,出现Cinc Client 10945 is running, will wait for it to finish and then run.,重启docker容器,重启大法好!

(2).如果长时间卡住,

nohup /opt/gitlab/embedded/bin/runsvdir-start &
gitlab-ctl reconfigure

(3).如果出现下图情况,是TZinfo没安装, apt-get install gem -y就可

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

3.gitlab-ctl start,启动

gitlab-ctl start 
apt-get install lsof
lsof -i:80 #可以看出nginx启动,并且端口为80

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

4.访问 因为我是映射到物理机,还记得当时启动-p 12345:80嘛, 这时候访问localhost:12345 -> container_ip:80

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

密码在cat /etc/gitlab/initial_root_password查看,输入之后就进去了

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

5.导出容器为镜像,如果为了方便迁移,但是又不想重新跑一次(这就是docker的由来),也不想写dockerfile,可以执行一行简单命令将容器导成镜像。

docker commit my-container my-image

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

2.3 小结

这里完成gitlab的安装和使用,同时导出一份镜像,方便以后复用

3.CI/CD部署

咕咕咕