如何完成github和gerrit的双向同步

首先说明一点的是,我这里使用的是gerrit的docker镜像。如果你是自己安装的,可能部分路径位置需要做一些改变。

1、github项目导入到gerrit

备注:从github到gerrit,我这里的需求只是导入,并没有实时同步。

在github创建一个repo,例如replication-demo

git clone git@github.com:liheyuan/replication-demo.git

在gerrit创建一个项目,注意保持同样的名字(非比选)和空提交。

执行下一步前,确保你是gerrit的Admin

git push ssh://lihy@gerrit.coder4.com:29418/replication-demo

删除之前旧提交,从gerrit来clone

git clone ssh://lihy@gerrit.coder4.com:29418/replication-demo

2、gerrit同步到github

首先安装一个Core插件replication

ssh -p 29418 lihy@gerrit.coder4.com gerrit plugin install 'jar:file:/var/gerrit/review_site/bin/gerrit.war!/WEB-INF/plugins/replication.jar'

配置插件

cat gerrit/etc/replication.config 
[remote "github_replication"]
  url = git@github.com:liheyuan/${name}.git
  push = +refs/heads/*:refs/heads/*
  push = +refs/tags/*:refs/tags/*
  timeout = 30
  threads = 3
  remoteNameStyle = dash
  authGroup = GitHub Replication

配置github的key和config,注意这个路径,是$GERRIT_HOME,不是review_site

/var/gerrit/.ssh # ls -alh
total 24
drwxr-xr-x 2 gerrit2 gerrit2 4.0K Nov 2 06:39 .
drwxr-sr-x 5 gerrit2 gerrit2 4.0K Nov 2 07:54 ..
-rwxr-xr-x 1 gerrit2 gerrit2 133 Nov 2 07:57 config
-rwxr-xr-x 1 gerrit2 gerrit2 1.6K Nov 2 04:20 id_rsa
-rwxr-xr-x 1 gerrit2 gerrit2 399 Nov 2 04:20 id_rsa.pub
-rwxr-xr-x 1 gerrit2 gerrit2 407 Nov 2 06:39 known_hosts
/var/gerrit/.ssh # cat ./config 
Host github.com
 User git 
 IdentityFile /var/gerrit/.ssh/id_rsa
 StrictHostKeyChecking no
 UserKnownHostsFile /dev/null

在gerrit的repo上执行个提交操作,并通过review

新建组并配置在要同步的项目中配置

Group Name: GitHub Replication
# 在需要同步的项目中单独配置
GitHub Replication denied read to refs/* in all projects
GitHub Replication allowed read to refs/* in in Project compliance/tests

最后一步,进行同步

ssh -p 29418 lihy@gerrit.coder4.com gerrit plugin reload replication

ssh -p 29418 lihy@gerrit.coder4.com replication start --wait --all

如果没反映,可以查看错误日志:/var/gerrit/review_site/logs/replication_log

 

 

Leave a Reply

Your email address will not be published.