由于工作需要,着手搭建了个基于gerrit的repo服务器,这里记录下流程和踩过的坑~~~
环境:linux unbuntu16.10 两个,一个为gerrit服务器,一个做repo客户端
操作概述
Server端:
1.下载repo工具,创建仓库供client端下载使用。
2.创建manifest工程
3.创建用来测试下载的工程gst-test
Client端:
1.向manifest工程添加default.xml
2.从server端下载repo工具
3..执行repo init
4.执行repo sync
具体流程
准备工作:
repo搭建前提:
1.将repo client所在机器的sshkey添加到gerrit服务器上的用户账号内。如果没有添加,按照如下方法执行:id_rsa.pub公钥文件的产生,注意:linux 用户一定要是后面用来搭建repo client的用户
$ sudo ssh-keygen -t rsa
查看公钥内容,执行拷贝
$ cat .ssh/id_rsa.pub
浏览器登录gerrit用户,将公钥id_rsa.pub的内容拷贝到setting ->ssh public key中:点击 add key,将id_rsa.pub拷贝进来,保存,OK。
2.repo client 所在机器安装好git
如果已经安装git,忽略本步骤,没有安装则参照如下方式安装:
$ apt-get install git
一、Server端
1.repo 工具建仓
1)下载repo到gerrit上
网上查到的下载repo工具的地址验证都失败,无法下载repo工具, 故从现有环境另一repo10.20.114.36服务器上clone了repo 工具,放置在gerrit服务器的git仓库下,使用命令如下:
$ git clone --bare ssh://user_name@ip:29418/repo.git
其中 user_name为gerrit注册用户的用户名 ip为gerrit服务器的IP
查看repo仓库
$ ls
All-Projects.git All-Users.git git-hook-test.git gst-first.git hook2.git hook.git repo.git wang-test.git
2)重启gerrit 服务,使新增仓库加入gerrit中
到gerrit 的bin目录下执行以下命令
./gerrit.sh stop
./gerrit.sh start
或者
./gerrit.sh restart
2.manifest仓库的创建
manifest仓中存放着管理git库的xml文档,下载时可以指定xml文档的名字,如果不指定,默认为default.xml。
可以在浏览器中用gerrit管理员登录gerrit服务器,然后创建工程,也可以在gerrit服务器上使用git命令创建工程:
$ git init --bare manifest.git
使用git 命令添的仓库,加记得重启gerrit服务以使其加入gerrit管理。
仓库创建完成后需要在某个client端添加default.xml文件并push到服务器上。这里就使用client端完成这项工作,这个工作只在需要修改repo所管理的工程的时候再做。
3.gst-test仓创建,同manifest仓
$ git init --bare gst-test.git
二、Client端
1.完成server端manifest仓中xml文件的上传
对于新建的repo来说,manifest仓中必须要添加xml文件,这里使用默认的default.xml
Clone库
$ git clone ssh:///user_name@ip:29418/manifest.git
添加default.xml
内容如下:
其中fetch=后面的内容填入路径为manifest.git所在的同级目录的路径;
project name=填入的工程,这里名字为gst-test,这个工程需要gerrit上已经创建
到gerrit服务器
$ cd manifest/
$ ls
default.xml
$ git add .
$ git commit -m "update xml"
$ git push origin HEAD:refs/for/master
$ scp -p -P 29418 user_name@ip:hooks/commit-msg .git/hooks/
$ git commit --amend
$ git push origin HEAD:refs/for/master
审核通过后commit到库中,待用...
同样的方法向gst-test仓中提交一个文件,待用...
2.下载repo工具
Repo工具也可以到网上下载,但是目前网络上提供的地址都验证失败,这里使用自己搭建的repo库:
$ git clone ssh://user_name@ip:29418/repo.git
将其中的repo文件拷贝到~/bin/目录
$ cd repo/
$ ls
$ cp repo ~/bin/
添加可执行权限:
$ chmod a+x repo
设置PATH
PATH=~/bin:$PATH
3.执行repo init
$ repo init -u ssh://user_name@ip:29418/manifest.git
查看文件
$ ls -a
. .. .repo
$ ls -a .repo/
. .. manifests manifests.git manifest.xml project.list projects repo
其中 ./repo/repo目录下放置的是repo工具
4.执行repo sync 同步工程
$ repo sync
查看clone下来的工程
$ ls
gst-test
OK,工程下载完成,大功告成!
如果有别的客户端要下载本项目,只需要执行客户端的2-4步。