搭建Gitlab私有仓库

1. gitlab部署

1.1 部署环境

创建gitlab

我们采用docker镜像的方式来创建一个gitlab仓库

mkdir /data/gitlab/{config,logs,data} -p
docker image load < gitlab-12-3-1.tar.gz
docker run -d --hostname gitlab --restart=always -p 7080:80 -p 2222:22 -p 8443:443 --name gitlab -v /data/gitlab/config:/etc/gitlab -v /data/gitlab/logs:/var/log/gitlab -v /data/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest

注:gitlab-ce 镜像要求主机的内存大于2G,所以我们需要提前调整虚拟机容量;由于该镜像涉及的内容比较多,我们需要等待数分钟(3min)然后再来访问gitlab首页

gitlab基础配配置:

# vi /data/gitlab/config/gitlab.rb
external_url 'http://192.168.19.131' 
gitlab_rails['gitlab_ssh_host'] = '192.168.19.131' 
gitlab_rails['time_zone'] = 'Asia/Shanghai' 
gitlab_rails['gitlab_shell_ssh_port'] = 22

重启gitlab:

docker restart gitlab

配置gitlab

浏览器访问gitlab:http://<gitlab私有仓库的ip>:7080

gitlab上显示html gitlab docsify_项目管理

注:首次登陆,需要设置我们的密码,并同时创建一个账号,我们这里的密码为123456abc

点击 “Change your password”,然后进入登陆界面,输入用户名root,密码就是我们刚才输入的:

gitlab上显示html gitlab docsify_持续集成系统_02


gitlab上显示html gitlab docsify_运维_03

配置项目

点击 “Create a Project”,按照指示,输入项目名称"meiduo"后,选择项目类型"private":

gitlab上显示html gitlab docsify_运维_04

点击最下面的"Create Project",效果如下:

gitlab上显示html gitlab docsify_运维_05

1.2 关联仓库

根据提示,接下来配置ssh认证,点击黄色字体的"add an SSH key",将jenkins服务器里面的python账户下的 ~/.ssh/id_rsa.pub 文件里面的信息输入到SSH key界面里面,配置完毕后,点击"Add key",效果如下:

gitlab上显示html gitlab docsify_运维_06

1.3 提交项目

点击gitlab的头像,进入到project的首页:

点击meiduo仓库名称,进入到仓库内容,下拉到最下面,会有仓库的一些基本操作命令,效果如下:

gitlab上显示html gitlab docsify_gitlab上显示html_07

根据提示,我们将现有的文件内容提交到gitlab仓库里面,由于我们的gitlab是基于docker镜像的方式在内网主机来设置的,所以我们需要将gitlab默认提供的命令进行变通一下

因为gitlab镜像运行在192.168.8.152主机,而且映射的端口是2222,所以我们在192.168.203.152主机连接的时候,需要将该仓库地址修改为:git clone ssh://git@192.168.203.152:2222/root/meiduo.git

那么接下来在我们把本地代码上传到gitlab中;

cd <本地工程>
git init
git remote add origin ssh://git@192.168.203.152:2222/root/meiduo.git
git add .
git commit -m 'init'
git push -u origin --all

执行完毕后,在gitlab界面上查看项目效果:

gitlab上显示html gitlab docsify_gitlab_08

2. 集成配置

2.1 插件配置

到插件管理界面,安装"GitLab Plugin":

gitlab上显示html gitlab docsify_运维_09

同样的方式来安装gitlab的其他几个相关插件:Gitlab Authentication、Gitlab API、Build Authorization Token Root、Build Token Trigger等

2.2 认证配置

虽然我们可以借助于之前的两种认证方式来实现gitlab的正常构建任务,但是对于gitlab环境来说,jenkins提供了一个专门的认证方式"Gitlab API Token",接下来我们就完成以下这种专用的认证机制

生成API token

登录Gitlab界面,点击右上角"图标",找到"Settings"选项,然后点击,效果如下:

gitlab上显示html gitlab docsify_运维_10

点击左侧边栏的"Access Tokens",依次输入名称-jenkins,过期时间-选定,作用范围-api,效果如下:

gitlab上显示html gitlab docsify_运维_11

选定完毕后,点击最下面的"Create personal access token",就会生成专用的gitlab访问的API token值:

gitlab上显示html gitlab docsify_持续集成系统_12

可以看到,gitlab就会生成一个专用的token值"5qyixs-oDbuLQpxAK1D4",接下来我们就可以来定制jenkins认证了;

jenkins认证账号

进入到凭证界面:

gitlab上显示html gitlab docsify_项目管理_13

点击"Add Credentials",在kind栏选择"Gitlab API token"一项,然后将我们刚才拷贝的token信息,输入到"API token"后面的输入框,随便输入一个id即可,效果如下:

gitlab上显示html gitlab docsify_持续集成系统_14

点击"OK"后jenkins对gitlab的认证账号创建完毕了:

gitlab上显示html gitlab docsify_持续集成系统_15

jenkins整合gitlab

点击jenkins的"Configure System",进入到jenkins的全局配置界面,找到"Gitlab",效果如下:

gitlab上显示html gitlab docsify_持续集成系统_16

按照如下规格输入信息:

connection name:jenkins,即我们在gitlab生成API token时候,用到的用户名
Gitlab host URL:http://192.168.19.131:7080,即Gitlab的web界面登录地址
Jenkins Credentials:选择我们刚才创建的Gitlab API token账号即可

输入完毕后,点击右下角的"Test Connection",最终效果如下:

gitlab上显示html gitlab docsify_gitlab上显示html_17

然后依次点击全局配置页面底下的"apply"和"save"即可。