# 前言 云帮目前支持对接GitLab、Gogs、Github,或者主流代码托管平台的公开项目,后期会考虑接入其他类型的Git服务。 # 私有云 GitLab是一个用于仓库管理系统的开源项目,私有云服务里使用比较多的自建Git服务。 ## 对接GitLab 通过应用市场进行安装Gitlab #### 安装GitLab应用 由于GitLab依赖Mysql和Redis,首先安装Mysql和Redis应用。 - 安装Mysql - 安装Redis - 安装GitLab 默认的管理账号:`admin@example.com/Administrator` #### 配置Gitlab的ssh协议端口 http(s)和ssh的区别: - http(s)前者可以随意克隆git上项目,不管是谁的;push 项目时需要验证用户名和密码 - ssh,克隆项目你必须是项目的拥有者或者管理员,且需要添加ssh key;push无需验证用户名和密码,如果key设置了密码,则需要密码(通常没必要),推荐使用SSH 待安装完成后,在GitLab应用高级选项里添加SSH端口22(stream),开启外部访问,重启应用。 ###### 权限配置 管理节点: ```docker docker pull hub.goodrain.com/dc-deploy/console:2017.03 #编辑docker-compose.yaml文件,大约在45行左右 vi /etc/goodrain/docker-compose.yam 将image: hub.goodrain.com/dc-deploy/console:2017.02修改为image: hub.goodrain.com/dc-deploy/console:2017.03 #修改完 dc-compose stop console cclear dc-compose up -d ``` 计算节点: ```docker #切换到租户服务目录下 cd /grdata/tenant/73e7e82d5558407696601b8461bcb4f7/service #说明73e7e82d5558407696601b8461bcb4f7为租户id,默认Tab键就可以了 ``` 在gitlab应用概览页查看源代码,搜service_id对应的值(如:abc) ![](http://7xihe6.com1.z0.glb.clouddn.com/001.png) cd到该目录下 (cd abc)后ll一下,可以看到data目录 ``` #当前完整路径 pwd /grdata/tenant/73e7e82d5558407696601b8461bcb4f7(tab补全)/service/abc(查看源码)/ chmod 755 data # 查看data目录权限 ll -a drwxr_xr_x ``` #### 对接GitLab 访问GitLab. - 新建一个项目仓库 - 在仓库里新建一个index.html文件并编辑 。 ###### 管理节点测试 ```shell #生成 ssh-key ssh-keygen -t rsa -f /etc/goodrain/ssh/goodrain-builder # 配置 ssh config文件 cat <<EOF >/etc/goodrain/ssh/config Host * IdentityFile ~/.ssh/goodrain-builder StrictHostKeyChecking no LogLevel ERROR Port 20002 EOF # 更改权限 chown -R rain.rain /etc/goodrain/ssh ``` 查看公钥并将其添加到gitlab用户的ssh-key(路径profile/keys) `cat /etc/goodrain/ssh/goodrain-builder.pub` ![](http://7xihe6.com1.z0.glb.clouddn.com/002.png) ``` ## 测试 dps | grep build | awk '{print $1}' din 容器id(上述命令执行的结果) ls ~/.ssh #查看是否有文件 cd /tmp && git clone <git-url地址> ``` ###### 其他机器测试 ```shell ssh-keygen cat .ssh/id_rsa.pub #添加到gitlab nano /etc/ssh/ssh_config #大概格式 Host 80.gr06cf43.zhengys.1t8zf.goodrain.io #git地址 IdentityFile ~/.ssh/id_rsa #私钥完整路径 StrictHostKeyChecking no LogLevel ERROR Port 20002 #git ssh 对外开放的端口 #说明一下 如果存在多个Git服务,同时还使用ssh管理服务,建议在Host里指定git地址 #测试 git clone 项目url ``` ![](http://7xihe6.com1.z0.glb.clouddn.com/03.png) ## 对接Gogs 相对GitLab来说,Gogs安装更加便捷,是一款极易搭建的自助 Git 服务,而且还是国人开发的。直接在应用市场安装Gogs即可。 安装完成,在高级选项里新增端口22(stream),开启对外部访问。 - 新建项目,将机器的公钥添加到用户的ssh-key列表里。 - 设置用户的ssh_config配置,大概格式 ![](http://7xihe6.com1.z0.glb.clouddn.com/gogs.png) Host 5000.gr06cf43.zhengys.1t8zf.goodrain.io #git地址 IdentityFile ~/.ssh/id_rsa #私钥完整路径 StrictHostKeyChecking no LogLevel ERROR Port 20002 #git ssh 对外开放的端口 - `git clone <git-url>` ## 公有云 在公有云搭建Git服务和内网自建Git服务,对接步骤相同。 公有云新建Git步骤同私有云。 云平台git clone代码,选择自建Git,然后将授权key添加Git应用的ssh-key列表里即可。 ![](http://7xihe6.com1.z0.glb.clouddn.com/key.png) ## windows 打开Git Bash或者终端工具(cmder等) 生成`ssh-keygen -t rsa -f ~/.ssh/id_rsa.pub -C "email"` 新增或添加配置文件config (路径C:\Users\当前用户\.ssh/config) ```shell Host 5000.gr06cf43.zhengys.1t8zf.goodrain.io #git地址 IdentityFile ~/.ssh/id_rsa #私钥完整路径 StrictHostKeyChecking no LogLevel ERROR Port 20002 #git ssh 对外开放的端口 ```