[toc]
## 对接到Gitlab
Gitlab服务可以通过云帮的应用市场进行安装,本文针对在云帮上运行的Gitlab进行介绍。
### 部署Gitlab应用
由于Gitlab依赖MySQL和Redis服务,因此需要先创建这两个服务(下个版本会优化这个操作,安装Gitlab,自动创建依赖的服务)
- 部署 MySQL 5.5.46
- 部署 Redis 2.8.23
- 部署Gitlab

给服务起个名字,并选择事先创建好的MySQL和Redis服务。
**注意:**
>[warning]
Gitlab 首次运行时需要从好雨云市拉取镜像,程序启动时需要导入数据库,做一些初始化操作,需要等待5~10分钟(根据网络、机器配置时间会有所不同)可以通过 日志页面查看部署状态。
安装完成后通过Gitlab应用页面的 “访问” 按钮打开Gitlab页面:
<img src="http://7xihe6.com1.z0.glb.clouddn.com/opengitlab.png" width="70%"/>
**Gitlab管理员账号:**
>[info]
>用户名:admin@example.com 密码:Administrator
#### 配置Gitlab的ssh协议端口
- 开启多端口
打开Gitlab的“配置页面” 的 “基础信息”段 将“对外端口配置”选择 “多端口开放”
<img src="http://7xihe6.com1.z0.glb.clouddn.com/gitlab_mulitport.png" width="70%" />
- 添加ssh端口
<img src="http://7xihe6.com1.z0.glb.clouddn.com/gitlab_addssh.png" width="70%" />
- 开启ssh对外访问
<img src="http://7xihe6.com1.z0.glb.clouddn.com/gitlab_openssh.png" width="70%" />
>[danger] 端口设置完成后需要将Gitlab应用重启。
### 权限设置
私有云-登录到计算节点
```
#切换到租户服务目录下
cd /grdata/tenant/73e7e82d5558407696601b8461bcb4f7/service
#说明73e7e82d5558407696601b8461bcb4f7为租户id,默认Tab键就可以了
在gitlab应用概览页查看源代码,搜service_id对应的值(如:abc)
```

cd到该目录下 (cd abc)后`ll`一下,可以看到data目录
### 配置管理节点的ssh config文件
指定到某个git-server使用的私钥, 默认是*, 你也可以按自己的实际情况自行编写
~~~
cat <<EOF >/etc/goodrain/ssh/config
Host *
IdentityFile ~/.ssh/goodrain-builder
StrictHostKeyChecking no
LogLevel ERROR
Port 20002
EOF
~~~
- 更改文件权限为rain用户
~~~
chown -R rain.rain /etc/goodrain/ssh
~~~
- 查看public key 内容
```bash
cat /etc/goodrain/ssh/goodrain-builder.pub
```
- 添加到gitlab用户的ssh-key(路径profile/keys)
将/etc/goodrain/ssh/goodrain-builder.pub的内容添加到gitlab创建demo项目的用户ssh-key列表中。
- 点击添加 SSH KEY
<img src="http://7xihe6.com1.z0.glb.clouddn.com/gitlab_sshkey.png" width="70%"/>
- 粘贴 管理节点 /etc/goodrain/ssh/goodrain-builder.pub 内容
<img src="http://7xihe6.com1.z0.glb.clouddn.com/gitlab_sshkey2.png" width="70%"/>
>[info] 说明
>
> ssh-key和 ssh config 是在管理节点上生成并配置,管理节点上的labor和builder程序都是以容器的方式运行,通过挂载的形式将宿主机的/etc/goodrain/ssh 目录挂载到容器内部。详情可以参见 /etc/goodrain/docker-compose.yaml 配置文件。
### 创建一个demo代码仓库
- 新建项目
<img src="http://7xihe6.com1.z0.glb.clouddn.com/gitlab_add_project.png" width="70%"/>
- 输入项目名称,创建私有项目
<img src="http://7xihe6.com1.z0.glb.clouddn.com/gitlab_add_project2.png" width="70%"/>
- 仓库中创建一个index.html 文件
<img src="http://7xihe6.com1.z0.glb.clouddn.com/gitlab_add_project3.png" width="70%"/>
- 编辑index.html 文件
<img src="http://7xihe6.com1.z0.glb.clouddn.com/gitlab_add_project4.png" width="70%"/>
### 管理节点生成ssh-key
平台通过ssh协议拉取Git 代码仓库。在管理节点生成ssh-key
~~~
# ssh-keygen -t rsa -f /etc/goodrain/ssh/goodrain-builder
.....
Your identification has been saved in /etc/goodrain/ssh/goodrain-builder.
Your public key has been saved in /etc/goodrain/ssh/goodrain-builder.pub.
.....
~~~
### 查看Gitlab对外开放的ssh端口号
在应用的高级选项里管理端口,添加SSH端口22(stream),开启外部访问,重启应用。
>[danger] 这里的20002端口是Gitlab对外开放的ssh协议端口,你需要查看你自己的Gitlab端口号,平台会随机分配对外端口
### 对接Gitlab测试
- 云帮新建应用流程测试
通过应用向导,创建应用,代码仓库地址使用ssh协议私有的地址。
- 通过命令行测试
管理节点执行
~~~
dps | grep build
din <container-id>
ls ~/.ssh
cd /tmp && git clone <git-url>
~~~