设为首页 收藏本站
查看: 6188|回复: 0

[经验分享] Gerrit与Gitlab同步配置replication&其他配置

[复制链接]

尚未签到

发表于 2017-3-2 09:25:44 | 显示全部楼层 |阅读模式
  一、Gerrit与Gitlab同步配置
  当配置好gerrit环境后,还需要与现有gitlab库进行同步配置,否则会影响现有开发与打包流程。
  1.安装gerrit replication插件



unzip gerrit.war
cp WEB-INF/plugins/replication.jar ~/temp/
ssh -p 29418 admin@172.19.16.64 gerrit plugin install -n replication.jar - <~/temp/replication.jar
ssh -p 29418 admin@172.19.16.64 gerrit plugin ls
Name                           Version    Status   File
-------------------------------------------------------------------------------
replication                    v2.8       ENABLED  replication.jar
  2.配置ssh config



cd ~/.ssh/
vim config
Host gitlab.***.cn
User gitlabowner
IdentityFile ~/.ssh/id_rsa #gitlab owner id_rsa
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
  3.替换gitlab lubase(project owner) ssh key



cd ~/.ssh/
rm id_rsa
rm id_rsa.pub
vim id_rsa
(粘贴owner的id_rsa)
vim id_rsa.pub
(粘贴owner的id_rsa.pub)
chmod 600 id_rsa
chmod 644 id_rsa.pub
  4.加入gitlab pubkey到kown_hosts



sh -c "ssh-keyscan -t rsa gitlab.***.cn >> ~/.ssh/known_hosts"
sh -c "ssh-keygen -H -f ~/.ssh/known_hosts"
  或者



git clone git@gitlab.***.cn:mobile/***.git
Warning: Permanently added the RSA host key for IP address '172.19.14.64' to the list of known hosts.
  5.配置replication.config



[remote "gitlab.***.cn"]
url = git@gitlab.***.cn:mobile/${name}.git
push = +refs/heads/*:refs/heads/*
push = +refs/tags/*:refs/tags/*
push = +refs/changes/*:refs/changes/*
timtout = 30
threads = 3
  6.启动replication



~/gerrit_code/bin/gerrit.sh restart
ssh -p 29418 admin@172.19.16.64 gerrit plugin reload replication
ssh -p 29418 admin@172.19.16.64 replication start ***
  二、Gerrit其他配置
  1.invalid committer问题
  gerrit默认关闭普通用户直接push master的权限,且普通用户需要配置git config global user.email与gerrit账户信息中的email一致
  由于现在无法使用email功能,可考虑关闭email功能并开启forge committer功能,或者通过gerrit数据库远程修改gerrit账户中的email信息
  *采用forge committer方式



vim ~/gerrit_code/etc/gerrit.config
[sendemail]
enable = false
  按照下图加入forge权限
DSC0000.png

  *采用修改gerrit数据库方式



ssh -p 29418 admin@172.19.16.64 gerrit gsql
gerrit>select * from account_external_ids;
ACCOUNT_ID | EMAIL_ADDRESS              | PASSWORD | EXTERNAL_ID
-----------+----------------------------+----------+----------------------------------
1000000    | NULL                       | NULL     | gerrit:admin
1000000    | NULL                       | NULL     | username:admin
1000005    | NULL                       | NULL     | gerrit:yanjunjie363
1000005    | NULL                       | NULL     | username:yanjunjie363
gerrit>insert into account_external_ids values('1000005', 'yanjunjie363@***.com.cn', 'NULL', 'yanjunjie363@***.com.cn');
gerrit>select * from account_external_ids;
ACCOUNT_ID | EMAIL_ADDRESS              | PASSWORD | EXTERNAL_ID
-----------+----------------------------+----------+----------------------------------
1000000    | NULL                       | NULL     | gerrit:admin
1000000    | NULL                       | NULL     | username:admin
1000005    | NULL                       | NULL     | gerrit:yanjunjie363
1000005    | NULL                       | NULL     | username:yanjunjie363
1000005    | yanjunjie363@***.com.cn | NULL     | mailto:yanjunjie363@***.com.cn
  按照以上任意一种方式配置后,可git push origin HEAD:refs/for/master成功
  2.admin remote access问题
  在远程执行ssh -p 29418 admin@172.19.16.64 gerrit plugin ls时会提示报错,因为gerrit默认关闭远程admin操作权限
  解决方法:



vim ~/gerrit_code/etc/gerrit.config
[plugins]
allowRemoteAdmin = true
  在远程执行ssh -p 29418 admin@172.19.16.64 gerrit gsql时会提示报错,因为gerrit默认关闭操作database权限
  解决方法:在Projects-Access中加入如上图中的Access Database功能
  3.replication rejected问题
  在执行ssh -p 29418 admin@172.19.16.64 replication start lubase时,gerrit replication日志中报错:replication_log



[2016-10-18 15:09:40,861] [eb662c68] Created remote repository: git@gitlab.***.cn:mobile/All-Projects.git
[2016-10-18 15:09:40,861] [eb662c68] Missing repository created; retry replication to git@gitlab.***.cn:mobile/All-Projects.git
  这个问题是因为gerrit有两个默认git库All-Projects和All-Users,用来默认配置gerrit项目和账户权限,因为gitlab未开启创建git库权限,所以提示失败。
  在执行ssh -p 29418 admin@172.19.16.64 replication start lubase时,gerrit replication日志中报错:replication_log



[2016-10-17 17:26:46,210] [b716d4c2] Failed replicate of refs/changes/02/2/1 to git@gitlab.***.cn:mobile/***.git, reason: pre-receive hook declined
  这个问题是因为gitlab库权限问题导致,当***开启master protected,并使用yanjunjie363(master用户)的ssh-key push并replication时,会报该错误。
  可关闭***的master protected权限,或者使用ufo(owner用户)的ssh-key push并replication即刻解决。
  如果出现如下log,则表示replication插件安装成功:error_log



[2016-10-18 11:19:51,301] [main] INFO  com.google.gerrit.server.plugins.PluginLoader : Loading plugins from /home/gerrit/workspaces/gerrit_code/plugins
[2016-10-18 11:19:51,381] [main] WARN  com.googlesource.gerrit.plugins.replication.ReplicationFileBasedConfig : Config file /home/gerrit/workspaces/gerrit_code/etc/replication.config does not exist; not replicating
[2016-10-18 11:19:51,383] [main] INFO  com.google.gerrit.server.plugins.PluginLoader : Loaded plugin replication, version v2.12
[2016-10-18 11:19:51,542] [main] INFO  com.google.gerrit.server.change.ChangeCleanupRunner : Ignoring missing changeCleanup schedule configuration
[2016-10-18 11:19:51,579] [main] INFO  com.google.gerrit.sshd.SshDaemon : Started Gerrit SSHD-CORE-0.14.0 on *:29418
[2016-10-18 11:19:51,581] [main] INFO  org.eclipse.jetty.server.Server : jetty-9.2.13.v20150730
[2016-10-18 11:19:51,798] [main] INFO  org.eclipse.jetty.server.handler.ContextHandler : Started o.e.j.s.ServletContextHandler@1304204{/,null,AVAILABLE}
[2016-10-18 11:19:51,800] [main] INFO  org.eclipse.jetty.server.ServerConnector : Started ServerConnector@189a9e6{HTTP/1.1}{0.0.0.0:8088}
[2016-10-18 11:19:51,801] [main] INFO  org.eclipse.jetty.server.Server : Started @4615ms
  如果出现如下log,该表示gerrit与gitlab同步成功:replication_log



[2016-10-18 15:15:48,160] [] scheduling replication ***:refs/heads/master => git@gitlab.***.cn:mobile/***.git
[2016-10-18 15:15:48,160] [] scheduled ***:refs/heads/master => [9000013d] push git@gitlab.***.cn:mobile/***.git to run after 15s
[2016-10-18 15:16:03,160] [9000013d] Replication to git@gitlab.***.cn:mobile/***.git started...
[2016-10-18 15:16:03,161] [9000013d] Push to git@gitlab.***.cn:mobile/***.git references: [RemoteRefUpdate[remoteName=refs/heads/master, NOT_ATTEMPTED, (null)...a2e1f13bd12cd398ed45ab06fa231cac6334f0c8, srcRef=refs/heads/master, forceUpdate, message=null]]
[2016-10-18 15:16:03,820] [9000013d] Replication to git@gitlab.***.cn:mobile/***.git completed in 660ms, 15000ms delay, 0 retries
  三、权限配置参考
DSC0001.png

  参考链接
  安装与配置gerrit replication插件
  https://gerrit.libreoffice.org/plugins/replication/Documentation/config.html
  https://gist.github.com/Aricg/56f1a769cbdcbb93b459
  gerrit主机中加入gitlab sshkey http://www.cnblogs.com/zhanchenjin/p/5032218.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-349090-1-1.html 上篇帖子: intellij idea社区版 & maven & git & tomcat/jetty 的struts2项目的搭建 下篇帖子: How to push your code in git
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表