zoukankan      html  css  js  c++  java
  • Gerrit与Gitlab同步配置replication&其他配置

    一、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权限

    *采用修改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

    三、权限配置参考

    参考链接

    安装与配置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

  • 相关阅读:
    Do You See Me? Ethical Considerations of the Homeless
    ELDER HOMELESSNESS WHY IS THIS AN ISSUE?
    Endoflife support is lacking for homeless people
    html内联框架
    html字体
    html块 div span
    html列表
    html表格
    SQL Server管理员专用连接的使用   作为一名DBA,经常会处理一些比较棘手的服务无响应问题,鉴于事态的严重性,多数DBA可能直接用“重启”大法,以便尽快的恢复生产环境的正常运转,但是多数情况
    如何配置最大工作线程数 (SQL Server Management Studio)
  • 原文地址:https://www.cnblogs.com/tesky0125/p/5973642.html
Copyright © 2011-2022 走看看