资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

Centos搭建CI持续集成系统环境--部署gerrit环境完整记录

gerrit是一套代码审核环境,安装前提需要安装java环境,MySQL环境,nginx环境。这里我为了简单直接用lnmp一键安装,剩下就是java了。

成都创新互联公司是一家专业提供石台企业网站建设,专注与成都网站制作、成都做网站、H5页面制作、小程序制作等业务。10年已为石台众多企业、政府机构等服务。创新互联专业网站设计公司优惠进行中。

lnmp不会安装的可以参考一下用shell脚步一键搭建lnmp环境实战

安装前需要准备的文件如下:(http://pan.baidu.com/s/1jIwJSz0,提取密码:fue3)

mysql-connector-java-5.1.21.jar

bcpkix-jdk15on-1.52.jar

gerrit-2.11.3.war

#############################gerrit其他版本下载地址####################

如果选择其他版本,可以参考一下链接:http://www.cnblogs.com/kevingrace/p/5624122.html#commentform

Centos搭建CI持续集成系统环境--部署gerrit环境完整记录

准备工作完成,下面开始安装。

首先安装的是java

先删除系统自带的java

[root@wulaoer ~]# yum remove java
[root@wulaoer ~]# ls
anaconda-ks.cfg  install.log.syslog          lnmp1.3-full         lnmp-install.log
install.log      jdk-8u101-linux-x64.tar.gz  lnmp1.3-full.tar.gz
[root@wulaoer ~]# mkdir /usr/local/jvm
[root@wulaoer ~]# tar -zxf jdk-8u101-linux-x64.tar.gz -C /usr/local/jvm/

我已经下载好了,直接传上来了,设置java环境变量,

[root@wulaoer ~]# vi /etc/profile
...............省略部分.....................
export JAVA_HOME=/usr/local/jvm/jdk1.8.0_101
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
[root@wulaoer ~]# source /etc/profile  #生效java环境

检查java和javac环境

[root@wulaoer ~]# java
用法: java [-options] class [args...]
           (执行类)
   或  java [-options] -jar jarfile [args...]
           (执行 jar 文件)
其中选项包括:
    -d32          使用 32 位数据模型 (如果可用)
    -d64          使用 64 位数据模型 (如果可用)
    -server       选择 "server" VM
..................省略部分................................

javac环境

[root@wulaoer ~]# javac
用法: javac  
其中, 可能的选项包括:
  -g                         生成所有调试信息
  -g:none                    不生成任何调试信息
  -g:{lines,vars,source}     只生成某些调试信息
  -nowarn                    不生成任何警告
  -verbose                   输出有关编译器正在执行的操作的消息
  -deprecation               输出使用已过时的 API 的源位置
.....................省略部.................................

java环境,到此安装完成。

第二,创建gerrit数据库,并自定义编码为utf-8

[root@wulaoer ~]# mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.48-log Source distribution

Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database gerritdb CHARACTER SET utf8 COLLATE utf8_general_ci;
Query OK, 1 row affected (0.07 sec)

mysql> grant all on gerritdb.* to 'gerrituser'@'localhost' identified by 'gerritpass';
Query OK, 0 rows affected (0.06 sec)

第三、创建gerrit账户,并把安装文件放到gerrit家目录下。

创建gerrit用户

[root@wulaoer ~]# useradd gerrit
[root@wulaoer ~]# su - gerrit
[gerrit@wulaoer ~]$

把文件拷贝到gerrit家目录下

[root@wulaoer ~]# ll
总用量 713868
-rw-------. 1 root root      1431 6月   1 19:17 anaconda-ks.cfg
-rwxr-xr-x. 1 root root    622849 7月  14 11:22 bcpkix-jdk15on-1.52.jar
-rwxr-xr-x. 1 root root  45136951 7月   8 19:34 gerrit-2.11.3.war
-rw-r--r--. 1 root root     27338 6月   1 19:16 install.log
-rw-r--r--. 1 root root      7572 6月   1 19:15 install.log.syslog
-rw-r--r--. 1 root root 181352138 7月  20 11:50 jdk-8u101-linux-x64.tar.gz
-rwxr-xr-x. 1 root root    827942 7月  14 11:22 mysql-connector-java-5.1.21.jar

把文件拷贝到gerrit目录下并给予权限

[root@wulaoer ~]# cp gerrit-2.11.3.war /home/gerrit/
[root@wulaoer ~]# mkdir -p /home/gerrit/gerrit_site/lib
[root@wulaoer ~]# cp mysql-connector-java-5.1.21.jar /home/gerrit/gerrit_site/lib/
[root@wulaoer ~]# cp bcpkix-jdk15on-1.52.jar /home/gerrit/gerrit_site/lib/
[root@wulaoer ~]# chown -R gerrit.gerrit /home/gerrit/

第四、在gerrit账户下进行安装

注意,这里选用了mysql数据库,Verified,http认证代理,其他的都是默认

[root@wulaoer ~]# su - gerrit
[gerrit@wulaoer ~]$ java -jar gerrit-2.11.3.war init -d ~/gerrit_site
Using secure store: com.google.gerrit.server.securestore.DefaultSecureStore
*** Gerrit Code Review 2.11.3
*** 
*** Git Repositories
*** 
Location of Git repositories   [git]: 
*** SQL Database
*** 
Database server type           [h3]: mysql  #选择mysql
Server hostname                [localhost]: 
Server port                    [(mysql default)]: 
Database name                  [reviewdb]: gerritdb    #数据库名
Database username              [gerrit]: gerrituser    #数据库用户名
gerrituser's password          : 
              confirm password :         #数据库密码
*** Index
*** 
Type                           [LUCENE/?]: 
The index must be rebuilt before starting Gerrit:
  java -jar gerrit.war reindex -d site_path
*** User Authentication
*** 
Authentication method          [OPENID/?]: http
Get username from custom HTTP header [y/N]? 
SSO logout URL                 : 
*** Review Labels
*** 
Install Verified label         [y/N]? y
*** Email Delivery
*** 
SMTP server hostname           [localhost]: 
SMTP server port               [(default)]: 
SMTP encryption                [NONE/?]: 
SMTP username                  : 
*** Container Process
*** 
Run as                         [gerrit]: 
Java runtime                   [/usr/local/jvm/jdk1.8.0_101/jre]: 
Copy gerrit-2.11.3.war to /home/gerrit/gerrit_site/bin/gerrit.war [Y/n]? 
Copying gerrit-2.11.3.war to /home/gerrit/gerrit_site/bin/gerrit.war
*** SSH Daemon
*** 
Listen on address              [*]: 
Listen on port                 [29418]: 
Gerrit Code Review is not shipped with Bouncy Castle Crypto SSL v151
  If available, Gerrit can take advantage of features
  in the library, but will also function without it.
Download and install it now [Y/n]? 
Renaming bcpkix-jdk15on-1.52.jar to .bcpkix-jdk15on-1.52.jar.backupDownloading http://www.bouncycastle.org/download/bcpkix-jdk15on-151.jar ... !! FAIL !!
error: http://www.bouncycastle.org/download/bcpkix-jdk15on-151.jar: 302 Found
Please download:
  http://www.bouncycastle.org/download/bcpkix-jdk15on-151.jar
and save as:
  /home/gerrit/gerrit_site/lib/bcpkix-jdk15on-151.jar
Press enter to continue 
Continue without this library  [Y/n]? 
Generating SSH host key ... rsa(simple)... done
*** HTTP Daemon
*** 
Behind reverse proxy           [y/N]? 
Use SSL (https://)             [y/N]? 
Listen on address              [*]: 
Listen on port                 [8080]: 
Canonical URL                  [http://localhost:8080/]: 
*** Plugins
*** 
Installing plugins.
Install plugin download-commands version v2.11.3 [y/N]? 
Install plugin reviewnotes version v2.11.3 [y/N]? 
Install plugin singleusergroup version v2.11.3 [y/N]? 
Install plugin replication version v2.11.3 [y/N]? 
Install plugin commit-message-length-validator version v2.11.3 [y/N]? 
Initializing plugins.
No plugins found with init steps.
Initialized /home/gerrit/gerrit_site

到了这里,gerrit安装完成,下面开始启动。

[gerrit@wulaoer ~]$ /home/gerrit/gerrit_site/bin/gerrit.sh start
Starting Gerrit Code Review: FAILED

出现这种错误解决方法如下:

[gerrit@wulaoer ~]$ java -jar gerrit-2.11.3.war reindex -d /home/gerrit/gerrit_site
[2016-09-06 10:22:27,387] INFO  com.google.gerrit.server.git.LocalDiskRepositoryManager : Defaulting core.streamFileThreshold to 61m
[2016-09-06 10:22:28,067] INFO  com.google.gerrit.server.cache.h3.H2CacheFactory : Enabling disk cache /home/gerrit/gerrit_site/cache
Reindexing changes: done    
Reindexed 0 changes in 0.0s (0.0/s)
Warning: InterruptedException
java.lang.InterruptedException
        at java.lang.Object.wait(Native Method)
        at java.lang.Thread.join(Thread.java:1253)
        at org.h3.util.MathUtils.getSecureRandom(MathUtils.java:104)
        at org.h3.util.MathUtils.secureRandomBytes(MathUtils.java:301)
        at org.h3.store.FileLock.setUniqueId(FileLock.java:309)
        at org.h3.store.FileLock.lockFile(FileLock.java:339)
        at org.h3.store.FileLock.lock(FileLock.java:133)
        at org.h3.engine.Database.open(Database.java:575)
        at org.h3.engine.Database.openDatabase(Database.java:236)
        at org.h3.engine.Database.(Database.java:231)
        at org.h3.engine.Engine.openSession(Engine.java:56)
        at org.h3.engine.Engine.openSession(Engine.java:160)
        at org.h3.engine.Engine.createSessionAndValidate(Engine.java:139)
        at org.h3.engine.Engine.createSession(Engine.java:122)
        at org.h3.engine.Engine.createSession(Engine.java:28)
        at org.h3.engine.SessionRemote.connectEmbeddedOrServer(SessionRemote.java:323)
        at org.h3.jdbc.JdbcConnection.(JdbcConnection.java:105)
        at org.h3.jdbc.JdbcConnection.(JdbcConnection.java:90)
        at org.h3.Driver.connect(Driver.java:73)
        at com.google.gerrit.server.cache.h3.H2CacheImpl$SqlHandle.(H2CacheImpl.java:636)
        at com.google.gerrit.server.cache.h3.H2CacheImpl$SqlStore.acquire(H2CacheImpl.java:604)
        at com.google.gerrit.server.cache.h3.H2CacheImpl$SqlStore.buildBloomFilter(H2CacheImpl.java:365)
        at com.google.gerrit.server.cache.h3.H2CacheImpl$SqlStore.open(H2CacheImpl.java:337)
        at com.google.gerrit.server.cache.h3.H2CacheImpl.start(H2CacheImpl.java:167)
        at com.google.gerrit.server.cache.h3.H2CacheFactory$1.run(H2CacheFactory.java:113)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
[2016-09-06 10:22:29,825] INFO  com.google.gerrit.server.cache.h3.H2CacheFactory : Finishing 4 disk cache updates

启动一次看看

[gerrit@wulaoer ~]$ /home/gerrit/gerrit_site/bin/gerrit.sh start
Starting Gerrit Code Review: OK

如果出现

[gerrit@wulaoer ~]$ /home/gerrit/gerrit_site/bin/gerrit.sh start
** ERROR: GERRIT_SITE not set

解决方法:

在/home/gerrit/gerrit_site/bin/gerrit.sh启动文件里添加下面一行,即指定gerrit2的路径

GERRIT_SITE=/home/gerrit/gerrit_site

第五、配置gerrit

修改/home/gerrit/gerrit_site/etc/gerrit.config配置文件

[gerrit@wulaoer ~]$ vi gerrit_site/etc/gerrit.config 
[gerrit]
        basePath = git
        canonicalWebUrl =  http://192.168.0.145:8081/    #nginx代理IP和端口 
...........................................................
[httpd]
        listenUrl = http://*:8080/

nginx定义新的端口代理配置,把/usr/local/nginx/conf/nginx.conf复制一份到/usr/local/nginx/conf/vhost/下,更名为gerrit.conf,gerrit的配置文件修改如下。

[gerrit@wulaoer vhost]$ pwd
/usr/local/nginx/conf/vhost
[gerrit@wulaoer vhost]$ cat gerrit.conf 
server
    {
        listen 8081;   #端口
        server_name 192.168.0.145;  #访问IP
        index index.html index.htm index.php;

        location / {

          auth_basic              "Gerrit Code Review";

          auth_basic_user_file    /home/gerrit/gerrit_site/etc/passwords;

          proxy_pass              http://192.168.0.145:8080/;#默认的ip+端口

          proxy_set_header        X-Forwarded-For $remote_addr;

          proxy_set_header        Host $host;

       }
}

AuthUserFile路径为/home/gerrit/gerrit_site/etc/passwords

在nginx进程用户默认的是www,无权访问路径需要给/home/gerrit赋予权限

[root@wulaoer ~]# setfacl -m g:www:rx /home/gerrit

温馨提示:这里如果不赋予权限访问提示500错误

[或者 setfacl -R -m u:www:rx /home/gerrit  上面是针对所属组进行授权,这里可以针对用户授权]

第六、创建用户

在创建用户的时候需要用到htpasswd,所以这里需要安装一下:

[root@wulaoer ~]# yum -y install httpd

创建认证权限(就是登陆的时候用到的账号和密码)

注意:第一次加-c参数是为了创建系统管理员,不加-c是普通话用户。

[root@wulaoer ~]# htpasswd -c /home/gerrit/gerrit_site/etc/passwords  gerrit
New password: 
Re-type new password: 
Adding password for user gerrit
[root@wulaoer ~]# htpasswd  /home/gerrit/gerrit_site/etc/passwords  wulaoer
New password: 
Re-type new password: 
Adding password for user wulaoer
[root@wulaoer ~]# htpasswd  /home/gerrit/gerrit_site/etc/passwords  jenkins
New password: 
Re-type new password: 
Adding password for user jenkins

这里创建了一个管理员gerrit,两个普通用户jenkins,wulaoer。两个普通用户会在另一个文章里做说明,大家现在不必过于在意。

重启一下nginx服务和关闭防火墙。

[root@wulaoer ~]# /usr/local/nginx/sbin/nginx -s reload
[root@wulaoer ~]# service iptables stop
iptables:将链设置为政策 ACCEPT:filter                    [确定]
iptables:清除防火墙规则:                                 [确定]
iptables:正在卸载模块:                                   [确定]

下面访问http://192.168.0.145:8081,输入创建的用户信息即可登录gerrit

Centos搭建CI持续集成系统环境--部署gerrit环境完整记录

以上是关于gerrit的搭建和简单的配置。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

下面是邮箱的设置,原本在安装的时候邮箱环节是默认安装的,安装后登录gerrit,默认邮箱是空的,所以设置手动设置,注册邮箱并激活,设置如下:

[root@wulaoer ~]# su - gerrit
[gerrit@wulaoer ~]$ cd gerrit_site/etc/
[gerrit@wulaoer etc]$ vi gerrit.config 
#####################################################################
[sendemail]
        smtpServer = smtp.exmail.qq.com        #发件箱信息设置
        smtpUser = *******@qq.com
        from = *******@qq.com
        smtpPass = **********
#####################################################################
[gerrit@wulaoer etc]$ vi secure.config 
####################################################################
[sendemail]
        smtpPass = **********

注意:sendemail的密码会保存到secure.config文件里,一定要保证gerritconfig文件里的密码和secure.conf的密码一致

重启gerrit服务即可

[gerrit@wulaoer etc]$ /home/gerrit/gerrit_site/bin/gerrit.sh restart
Stopping Gerrit Code Review: OK
Starting Gerrit Code Review: OK

重启成功后登录gerrit页面进行注册邮箱,默认清晰不注册邮箱,在设置栏里没有邮箱可以选择

Centos搭建CI持续集成系统环境--部署gerrit环境完整记录

发送成功,登录自己的qq邮箱会收到gerrit上设置的发件人发过来的邮件,查看自己的邮件就是上面输入的69结尾的QQ邮箱。点击红色连接可以直接激活,有的浏览器不能调整建议更换成火狐浏览器。

Centos搭建CI持续集成系统环境--部署gerrit环境完整记录

点击连接激活邮箱,在设置栏就有激活的邮箱了。

Centos搭建CI持续集成系统环境--部署gerrit环境完整记录

点击右上角的用户有一个settings

Centos搭建CI持续集成系统环境--部署gerrit环境完整记录

注:用htpasswd创建第一个用户时系统管理员,ID为1,只有系统管理员才有Create权限(创建group和project),其他的只有查看权限。使用htpaswd创建用户时,并没有往gerrit中添加账号,只有当该用户通过web登录gerrit服务器时,该账号才会被添加进gerrit数据库中。

退出admin账号重新登陆(HTTP认证模式不支持Sign Out,需要先Sign Out退出账号,关闭浏览器后再登陆才能出现http验证密码的对话框

****************************git中文编码问题**********************************************

为妥善解决中文编码的问题,对所有git repository做如下约定:

a、所有文本文件都必须存储成utf8编码

b、对git做如下设置:

    git config --global core.quotepath false
    git config --global i18n.logoutputencoding utf8
    git config --global i18n.commitencoding utf8

安装gerrit的时候对于数据库(选择myqsl方式的话)的编码设定为utf8

**********************gerrit对接gitweb**********************************************

上面搭建好的gerrit,登陆进去在Projects项目里的右边没有gitweb的超链接

1.需要先搭建gitweb,然后进行相关配置

[root@wulaoer ~]# yum install -y gitweb    【或者直接yum install -y git*】

gitweb安装后的目录路径是/var/www/git

2. 通过git config配置一下

[root@wulaoer ~]# git config --file /home/gerrit/gerrit_site/etc/gerrit.config gitweb.cgi /var/www/git/gitweb.cgi 
[root@wulaoer ~]# git config --file /home/gerrit/gerrit_site/etc/gerrit.config --unset gitweb.url

3.重启gerrit,然后登陆gerrit后,gitweb超链接效果就有了

Centos搭建CI持续集成系统环境--部署gerrit环境完整记录

********************** ********************** ******************** 

gitweb还是蛮实用的。

可以通过打开gerrit上某个工程的gitweb,查看到这个工程代码近期的所有动向!

【默认情况下:只有gerrit的管理员权限才能查看gitweb】

【普通用户要想访问gitweb,需要后续添加访问权限,后期会继续详解】

**************************ssh公钥设置********************************************

在gerrit本机上使用下面的命令生成管理员账号(这里将gerrit作为管理员)的公私钥

[root@wulaoer ~]# su - gerrit
[gerrit@wulaoer ~]$ ssh-keygen -t rsa -C 99317069@qq.com
Generating public/private rsa key pair.
Enter file in which to save the key (/home/gerrit/.ssh/id_rsa): 
Created directory '/home/gerrit/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/gerrit/.ssh/id_rsa.
Your public key has been saved in /home/gerrit/.ssh/id_rsa.pub.
The key fingerprint is:
bc:58:5a:8d:73:0b:ac:01:39:ac:96:02:85:45:92:ba 99317069@qq.com
The key's randomart p_w_picpath is:
+--[ RSA 2048]----+
|.=+              |
|oo . .           |
|o   =            |
|o  o o o o       |
|..+   . S o      |
|Eo     B = .     |
|      + . .      |
|                 |
|                 |
+-----------------+
[gerrit@wulaoer ~]$ cat ~/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA2e/iJxw7FG0rhSZkSy2M31JBW/lnNewRgu6cyC2jMheqYVHZhf9XlAR9gfR8V8h2nqBo8GWraNchdOAdTNTZ1nqfrE4iDRd2FKhL2zx47oErj3H/Hv6747r0pagP+kCt7c2hglHXhhs4SLWg3BSK+tXOM1Db7kgp+QhwrbmjkbLXJ+G/LwlLJMY1q6mI5fmEUmCC+QfZgZ9e9vKO6fjFDjD5nHsRd70Jnf1fUQC99FvqiYhw8e/YJNnY+dMoczTDDwzx6zsB0qx6Cpw5GskCUPVztqDeH7TgRZgY6Ttkakglied2sv11sRzVV0sn3msCgmu1qsIdTeCDx5gdJQEI0w== 99317069@qq.com

将gerrit账号的公钥内容拷贝到gerrit界面的SSH Public Keys里。

Centos搭建CI持续集成系统环境--部署gerrit环境完整记录

Settings

Centos搭建CI持续集成系统环境--部署gerrit环境完整记录

接下来设置别名,方便使用ssh连接gerrit

可以直接在gerrit用户家目录(/home/gerrit)下的.bashrc文件里设置。如下别名是登录gerrit的admin账号下的操作:

[gerrit@wulaoer ~]$ vi .bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi
# User specific aliases and functions

然后让文件生效

[gerrit@wulaoer ~]$ source .bashrc
[gerrit@wulaoer ~]$ ssh-gerrit
The authenticity of host '[192.168.0.145]:29418 ([192.168.0.145]:29418)' can't be established.
RSA key fingerprint is 4f:6a:ec:3c:7e:52:2e:56:0a:e0:b1:fb:38:86:da:42.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[192.168.0.145]:29418' (RSA) to the list of known hosts.

  ****    Welcome to Gerrit Code Review    ****

  Hi gerrit管理员, you have successfully connected over SSH.

  Unfortunately, interactive shells are disabled.
  To clone a hosted Git repository, use:

  git clone ssh://gerrit@192.168.0.145:29418/REPOSITORY_NAME.git

Connection to 192.168.0.145 closed.

********************************Gerrit权限说明*******************************

上面介绍了gerrit环境的部署,下面介绍下gerrit权限:

Abandon

此权限允许用户丢弃一个提交的change。如果用户有push权限,给用户分配此权限的同时用户也被分配了restore a change的权限。

Create Reference

此权限管理用户是有可以创建references,branches,tags。此权限一般与普通的push权限一起被分配。

Forge Author

伪造发起人权限,此权限允许用户绕过提交时的身份验证(Gerrit默认会匹配提交信息中author或者committer行中的email地址,如果 Email地址不匹配,则不允许提交)。

Forge Committer

伪造提交者权限,此权限允许用户绕过提交时的身份验证(Gerrit默认会匹配提交信息中author或者committer行中的email地址,如果 Email地址不匹配,则不允许提交 )。

Forge Server

伪造Gerrit服务器权限,此权限允许在committer行中使用server owner和email

Owner

此权限允许用户修改香项目的配置,具体如下:

修改项目描述

通过ssh的"create-branch"命令创建分支

在web UI界面创建/删除branch

允许/撤销任何访问权限,包括Owner权限。

Push

此分类控制用户被允许怎样推送新commit到Gerrit。

Direct Push

所有已存在的branch可以快进到新的commit。创建新分支受“Create Reference”控制,不允许删除已存在的分支,这是最安全的模式(因为commit不可以被丢弃)。

Force option

允许已存在的branch被删除。开启此选项可以从项目历史中删除提交记录。

此权限主要用来给那些只想用Gerrit的访问控制,不需要Gerrit的代码审查功能的工程使用。

Upload To Code Review

此push权限分配在refs/for/refs/heads/BRANCH命名空间上,允许用户提交一个未合并(non-merge)的commit到refs/for/BRANCH命名空间,创建一个新的代码审查change。

用户必须能够clone和fetch一个工程才可以提交change,所以用户还必须拥有Read权限。

Push Merge Commits

此权限允许用户提交merge commits,它是Push权限的附属物,如果想只允许通过Gerrit做merge操作,那么应该只分配Push仅限而不分配此权限。

Push Annotated Tag

此类权限允许用户向工程仓库提交一个annotated tag。通常使用以下两种方式提交:

git push ssh://USER@HOST:PORT/PROJECT tag v1.0

或者:

git push https://HOST/PROJECT tag v1.0

Tags必须被注释(使用git tag -a),必须在refs/tags/下存在,而且必须是新的。

一般在工程达到了稳定且可发布的时候会打一个Tag。

此权限允许创建一个未签名的Tag。打Tag者的email地址必须与当前用户的一致。

如果要提交不是自己打的Tag,则必须同时分配Forge Committer Identity权限。

如果要提交轻标签(lightweight tags)分配Create Reference权限给引用/refs/tags/*

如果要删除或覆盖一个已存在的tag,分配Push权限并开启Force option。

Push Signed Tag

此类权限允许用户向工程仓库提交一个PGP签名的 tag。通常使用以下两种方式提交:

git push ssh://USER@HOST:PORT/PROJECT tag v1.0

或者:

git push https://HOST/PROJECT tag v1.0

Tags必须被注释(使用git tag -a),必须在refs/tags/下存在,而且必须是新的。

Read

此类权限控制工程的changes, comments,和code diffs可见性,和是否可通过SSH或HTTP访问Git。

如果在单独工程的ACL中设置的此权限,那么全局ACL中的设置将不起作用。

Rebase

此类仅限允许用户通过web页面的“Rebase Change”按钮衍合(Rebase)修改

Remove Reviewer

此类权限允许用户在一个change的reviewers list中移除其他用户。

change所属者可以移除0分或负分的reviewers(即使没有此权限)。

项目所有者和网站管理员可以移除所有reviewers(即使没有此权限)。

没有此权限的用户只可以移除自己。

Review Labels

// TODO

Submit

此类权限允许用户提交changes。

提交一个change会使该change尽可能快的合并到目的分支,使其作为项目历史永久的一部分。

为了提交change,所有的labels都必须允许提交,并且不能block它。

如果要快速提交一个push上的change,用户需要在refs/for/(e.g. on refs/for/refs/heads/master)有此权限。

Submit(On Behalf Of)

此类权限允许有Submit权限的用户代表其他用户提交change。

在project.config文件中,此权限被命名为submitAs。

View Drafts

此类权限允许用户查看其他用户提交的drafts changes

change所用者和任何明确添加的reviewers也可以查看(即使没用此权限)

Publish Drafts

此类权限允许用户发布其他用户提交的drafts changes

change所用者和任何明确添加的reviewers也可以查看(即使没用此权限)

Delete Drafts

此类权限允许用户删除其他用户提交的drafts changes

change所用者和任何明确添加的reviewers也可以查看(即使没用此权限)

Edit Topic Name

允许用户编辑提交到review的change的话题名。

change所用者,分支所用者,项目所用者和网站管理员都可以编辑此话题名(即使没有此权限)。

“Force Edit”标识控制是否可以编辑已关闭的change标题,如果此标识设置只能编辑open changes,则不可以编辑已关闭的change 标题。

Edit Hashtags

允许用户在提交到reviews的changes上添加或移除hashtags。

change所用者和任何明确添加的reviewers也可以查看(即使没用此权限)


当前标题:Centos搭建CI持续集成系统环境--部署gerrit环境完整记录
转载注明:http://cdkjz.cn/article/ghpiis.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220