一、概述
在工作中,很有可能遇到以下情况:
- 公司的gitlab,和自己的github
- 公司的gitlab关联到自己的github,由于公司项目管理需要搭建自己的gitlab(搭建于公司的云服务器)【注:一个工程中涉及多个项目,不花钱github无法建组而造成项目结构混乱】
- 自己的电脑需要同时管理gitlab和github不同平台的代码,需要一台电脑上配置两个SSH,以方便自己在工作和个人空间上的快速切换,提高效率。
二、搭建gitlab环境
2.1、gitlab官网参考链接
https://about.gitlab.com/install/
2.2、基于Docker Engine的安装
2.2.1、准备阶段
gitlab的搭建环境:linux
已经安装了Docker Engine,未安装的执行命令:
sudo yum install docker -y
环境变量配置:
export GITLAB_HOME=/srv/gitlab
2.2.2、搭建gitlab
a、执行命令
sudo docker run --detach \
--hostname emr.vclobby.com \
--publish 443:443 --publish 80:80 --publish 2222:22 \
--name gitlab \
--restart always \
--volume $GITLAB_HOME/config:/etc/gitlab \
--volume $GITLAB_HOME/logs:/var/log/gitlab \
--volume $GITLAB_HOME/data:/var/opt/gitlab \
gitlab/gitlab-ee:latest
参数说明
参数 | 说明 |
hostname | 访问的地址 |
publish | docker端口映射,分号前是外部端口,分号后是docker内端口;80:80,访问网站时不需要加端口,若是修改了80映射就需要加端口号;2222:22,服务器22端口被占用,修改映射端口到2222 |
name | docker的名字,用于重启、关闭、登录内核等 |
restart | 随服务器开机时,一同启动 |
volume | 数据卷,映射到服务器本地目录 |
b、查看log信息,gitlab是docker的–name参数
sudo docker logs -f gitlab
c、密码设置
web端第一次访问gitlab(emr.vclobby.com),若是没有出现root的密码设置;通过以下方式进入内核和数据库设置超级管理员(root)密码
# gitlab是docker的--name参数
sudo docker exec -it gitlab /bin/bash
gitlab-rails console -e production
user = User.where(id: 1).first
user.password ='hhhhhhhhhh'
user.password_confirmation ='hhhhhhhhhh'
user.save!
d、其他参数
# 关闭和删除; gitlab是docker的--name参数
sudo docker stop gitlab
sudo docker rm gitlab
三、gitlab与github共存
a、进入用户下的.ssh文件
cd ~/.ssh
b、生成秘钥文件
ssh-keygen -t rsa -C 'xxx@qqq.com' // GitLab
// Enter file in which to save the key (~/.ssh/id_rsa): id_rsa_gitlab
ssh-keygen -t rsa -C 'www@xxxxx.com' // GitHub
// Enter file in which to save the key (~/.ssh/id_rsa): id_rsa_github
c、上传公共密钥到gitlab和github上
找到id_rsa_gitlab.pub和id_rsa_github.pub 将里面的内容全部复制粘贴到github 和 gitlab 的SSHKEY上
gitlab添加sshkey
github添加sshkey
d、ssh-agent添加
ssh-agent -s
ssh-add ~/.ssh/id_rsa_github // 若配置是设置了密码,就输入生成秘钥时设置的密码;否则不需要
ssh-add ~/.ssh/id_rsa_gitlab // 若配置是设置了密码,就输入生成秘钥时设置的密码;否则不需要
e、配置config
vi config
Host github.com // 不动
HostName ssh.github.com // 不动
User aaaaa@aaaa.com // 你自己的github邮箱
PreferredAuthentications publickey // 不动
IdentityFile ~/.ssh/id_rsa_github // 不动
Port 443 // 如果ssh -T git@github.com的时候报 ssh: connect to host github.com port 22: Operation timed out就把Port这条加上吧,这个坑坑了我好久!!
Host emr.vclobby.com // 你们公司gitlab的ip地址
HostName emr.vclobby.com //与Host保持一致
User bbbbb@bbbbb.com // 你gitlab的邮箱
IdentityFile ~/.ssh/id_rsa_gitlab // 不动
Port 2222 // 你们公司gitlab的ip端口
注:配置config时,去掉//后面的注释;Host后面的值必须安装上面填写,便于git命令自动寻找对应的gitlab/github
f、本地git配置
测试
ssh -T git@github.com
ssh -T git@emr.vclobby.com
根据需要配置
git config --list
git config --local user.name 'aa'
git config --local user.email 'aa@ddd.com'
git config --global user.name 'aaww'
git config --global user.email 'aaa@ddd.com'