(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如果出現(xiàn)
[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復(fù)制一份到/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/;#默認(rèn)的ip+端口
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
}
}AuthUserFile路徑為/home/gerrit/gerrit_site/etc/passwords
在nginx進(jìn)程用戶默認(rèn)的是www,無權(quán)訪問路徑需要給/home/gerrit賦予權(quán)限
[root@wulaoer ~]# setfacl -m g:www:rx /home/gerrit溫馨提示:這里如果不賦予權(quán)限訪問提示500錯誤
[或者 setfacl -R -m u:www:rx /home/gerrit 上面是針對所屬組進(jìn)行授權(quán),這里可以針對用戶授權(quán)]第六、創(chuàng)建用戶
在創(chuàng)建用戶的時候需要用到htpasswd,所以這里需要安裝一下:
[root@wulaoer ~]# yum -y install httpd創(chuàng)建認(rèn)證權(quán)限(就是登陸的時候用到的賬號和密碼)
注意:第一次加-c參數(shù)是為了創(chuàng)建系統(tǒng)管理員,不加-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這里創(chuàng)建了一個管理員gerrit,兩個普通用戶jenkins,wulaoer。兩個普通用戶會在另一個文章里做說明,大家現(xiàn)在不必過于在意。
重啟一下nginx服務(wù)和關(guān)閉防火墻。
[root@wulaoer ~]# /usr/local/nginx/sbin/nginx -s reload
[root@wulaoer ~]# service iptables stop
iptables:將鏈設(shè)置為政策 ACCEPT:filter [確定]
iptables:清除防火墻規(guī)則: [確定]
iptables:正在卸載模塊: [確定]下面訪問http://192.168.0.145:8081,輸入創(chuàng)建的用戶信息即可登錄gerrit
以上是關(guān)于gerrit的搭建和簡單的配置。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
下面是郵箱的設(shè)置,原本在安裝的時候郵箱環(huán)節(jié)是默認(rèn)安裝的,安裝后登錄gerrit,默認(rèn)郵箱是空的,所以設(shè)置手動設(shè)置,注冊郵箱并激活,設(shè)置如下:
[root@wulaoer ~]# su - gerrit
[gerrit@wulaoer ~]$ cd gerrit_site/etc/
[gerrit@wulaoer etc]$ vi gerrit.config
#####################################################################
[sendemail]
smtpServer = smtp.exmail.qq.com #發(fā)件箱信息設(shè)置
smtpUser = *******@qq.com
from = *******@qq.com
smtpPass = **********
#####################################################################
[gerrit@wulaoer etc]$ vi secure.config
####################################################################
[sendemail]
smtpPass = **********注意:sendemail的密碼會保存到secure.config文件里,一定要保證gerritconfig文件里的密碼和secure.conf的密碼一致
重啟gerrit服務(wù)即可
[gerrit@wulaoer etc]$ /home/gerrit/gerrit_site/bin/gerrit.sh restart
Stopping Gerrit Code Review: OK
Starting Gerrit Code Review: OK重啟成功后登錄gerrit頁面進(jìn)行注冊郵箱,默認(rèn)清晰不注冊郵箱,在設(shè)置欄里沒有郵箱可以選擇
發(fā)送成功,登錄自己的qq郵箱會收到gerrit上設(shè)置的發(fā)件人發(fā)過來的郵件,查看自己的郵件就是上面輸入的69結(jié)尾的QQ郵箱。點(diǎn)擊紅色連接可以直接激活,有的瀏覽器不能調(diào)整建議更換成火狐瀏覽器。
點(diǎn)擊連接激活郵箱,在設(shè)置欄就有激活的郵箱了。
點(diǎn)擊右上角的用戶有一個settings
注:用htpasswd創(chuàng)建第一個用戶時系統(tǒng)管理員,ID為1,只有系統(tǒng)管理員才有Create權(quán)限(創(chuàng)建group和project),其他的只有查看權(quán)限。使用htpaswd創(chuàng)建用戶時,并沒有往gerrit中添加賬號,只有當(dāng)該用戶通過web登錄gerrit服務(wù)器時,該賬號才會被添加進(jìn)gerrit數(shù)據(jù)庫中。
退出admin賬號重新登陸(HTTP認(rèn)證模式不支持Sign Out,需要先Sign Out退出賬號,關(guān)閉瀏覽器后再登陸才能出現(xiàn)http驗(yàn)證密碼的對話框
****************************git中文編碼問題**********************************************
為妥善解決中文編碼的問題,對所有g(shù)it repository做如下約定:
a、所有文本文件都必須存儲成utf8編碼
b、對git做如下設(shè)置:
git config --global core.quotepath false
git config --global i18n.logoutputencoding utf8
git config --global i18n.commitencoding utf8安裝gerrit的時候?qū)τ跀?shù)據(jù)庫(選擇myqsl方式的話)的編碼設(shè)定為utf8
**********************gerrit對接gitweb**********************************************
上面搭建好的gerrit,登陸進(jìn)去在Projects項目里的右邊沒有g(shù)itweb的超鏈接
1.需要先搭建gitweb,然后進(jìn)行相關(guān)配置
[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.url3.重啟gerrit,然后登陸gerrit后,gitweb超鏈接效果就有了
********************** ********************** ********************
gitweb還是蠻實(shí)用的。
可以通過打開gerrit上某個工程的gitweb,查看到這個工程代碼近期的所有動向!
【默認(rèn)情況下:只有g(shù)errit的管理員權(quán)限才能查看gitweb】
【普通用戶要想訪問gitweb,需要后續(xù)添加訪問權(quán)限,后期會繼續(xù)詳解】
**************************ssh公鑰設(shè)置********************************************
在gerrit本機(jī)上使用下面的命令生成管理員賬號(這里將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賬號的公鑰內(nèi)容拷貝到gerrit界面的SSH Public Keys里。
Settings
接下來設(shè)置別名,方便使用ssh連接gerrit
可以直接在gerrit用戶家目錄(/home/gerrit)下的.bashrc文件里設(shè)置。如下別名是登錄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權(quán)限說明*******************************
上面介紹了gerrit環(huán)境的部署,下面介紹下gerrit權(quán)限:
Abandon
此權(quán)限允許用戶丟棄一個提交的change。如果用戶有push權(quán)限,給用戶分配此權(quán)限的同時用戶也被分配了restore a change的權(quán)限。
Create Reference
此權(quán)限管理用戶是有可以創(chuàng)建references,branches,tags。此權(quán)限一般與普通的push權(quán)限一起被分配。
Forge Author
偽造發(fā)起人權(quán)限,此權(quán)限允許用戶繞過提交時的身份驗(yàn)證(Gerrit默認(rèn)會匹配提交信息中author或者committer行中的email地址,如果 Email地址不匹配,則不允許提交)。
Forge Committer
偽造提交者權(quán)限,此權(quán)限允許用戶繞過提交時的身份驗(yàn)證(Gerrit默認(rèn)會匹配提交信息中author或者committer行中的email地址,如果 Email地址不匹配,則不允許提交 )。
Forge Server
偽造Gerrit服務(wù)器權(quán)限,此權(quán)限允許在committer行中使用server owner和email
Owner
此權(quán)限允許用戶修改香項目的配置,具體如下:
修改項目描述
通過ssh的"create-branch"命令創(chuàng)建分支
在web UI界面創(chuàng)建/刪除branch
允許/撤銷任何訪問權(quán)限,包括Owner權(quán)限。
Push
此分類控制用戶被允許怎樣推送新commit到Gerrit。
Direct Push
所有已存在的branch可以快進(jìn)到新的commit。創(chuàng)建新分支受“Create Reference”控制,不允許刪除已存在的分支,這是最安全的模式(因?yàn)閏ommit不可以被丟棄)。
Force option
允許已存在的branch被刪除。開啟此選項可以從項目歷史中刪除提交記錄。
此權(quán)限主要用來給那些只想用Gerrit的訪問控制,不需要Gerrit的代碼審查功能的工程使用。
Upload To Code Review
此push權(quán)限分配在refs/for/refs/heads/BRANCH命名空間上,允許用戶提交一個未合并(non-merge)的commit到refs/for/BRANCH命名空間,創(chuàng)建一個新的代碼審查change。
用戶必須能夠clone和fetch一個工程才可以提交change,所以用戶還必須擁有Read權(quán)限。
Push Merge Commits
此權(quán)限允許用戶提交merge commits,它是Push權(quán)限的附屬物,如果想只允許通過Gerrit做merge操作,那么應(yīng)該只分配Push僅限而不分配此權(quán)限。
Push Annotated Tag
此類權(quán)限允許用戶向工程倉庫提交一個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/下存在,而且必須是新的。
一般在工程達(dá)到了穩(wěn)定且可發(fā)布的時候會打一個Tag。
此權(quán)限允許創(chuàng)建一個未簽名的Tag。打Tag者的email地址必須與當(dāng)前用戶的一致。
如果要提交不是自己打的Tag,則必須同時分配Forge Committer Identity權(quán)限。
如果要提交輕標(biāo)簽(lightweight tags)分配Create Reference權(quán)限給引用/refs/tags/*
如果要刪除或覆蓋一個已存在的tag,分配Push權(quán)限并開啟Force option。
Push Signed Tag
此類權(quán)限允許用戶向工程倉庫提交一個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
此類權(quán)限控制工程的changes, comments,和code diffs可見性,和是否可通過SSH或HTTP訪問Git。
如果在單獨(dú)工程的ACL中設(shè)置的此權(quán)限,那么全局ACL中的設(shè)置將不起作用。
Rebase
此類僅限允許用戶通過web頁面的“Rebase Change”按鈕衍合(Rebase)修改
Remove Reviewer
此類權(quán)限允許用戶在一個change的reviewers list中移除其他用戶。
change所屬者可以移除0分或負(fù)分的reviewers(即使沒有此權(quán)限)。
項目所有者和網(wǎng)站管理員可以移除所有reviewers(即使沒有此權(quán)限)。
沒有此權(quán)限的用戶只可以移除自己。
Review Labels
// TODO
Submit
此類權(quán)限允許用戶提交changes。
提交一個change會使該change盡可能快的合并到目的分支,使其作為項目歷史永久的一部分。
為了提交change,所有的labels都必須允許提交,并且不能block它。
如果要快速提交一個push上的change,用戶需要在refs/for/[(e.g. on refs/for/refs/heads/master)有此權(quán)限。]
Submit(On Behalf Of)
此類權(quán)限允許有Submit權(quán)限的用戶代表其他用戶提交change。
在project.config文件中,此權(quán)限被命名為submitAs。
View Drafts
此類權(quán)限允許用戶查看其他用戶提交的drafts changes
change所用者和任何明確添加的reviewers也可以查看(即使沒用此權(quán)限)
Publish Drafts
此類權(quán)限允許用戶發(fā)布其他用戶提交的drafts changes
change所用者和任何明確添加的reviewers也可以查看(即使沒用此權(quán)限)
Delete Drafts
此類權(quán)限允許用戶刪除其他用戶提交的drafts changes
change所用者和任何明確添加的reviewers也可以查看(即使沒用此權(quán)限)
Edit Topic Name
允許用戶編輯提交到review的change的話題名。
change所用者,分支所用者,項目所用者和網(wǎng)站管理員都可以編輯此話題名(即使沒有此權(quán)限)。
“Force Edit”標(biāo)識控制是否可以編輯已關(guān)閉的change標(biāo)題,如果此標(biāo)識設(shè)置只能編輯open changes,則不可以編輯已關(guān)閉的change 標(biāo)題。
Edit Hashtags
允許用戶在提交到reviews的changes上添加或移除hashtags。
change所用者和任何明確添加的reviewers也可以查看(即使沒用此權(quán)限)
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
文章題目:Centos搭建CI持續(xù)集成系統(tǒng)環(huán)境--部署gerrit環(huán)境完整記錄-創(chuàng)新互聯(lián)
文章位置:http://weahome.cn/article/dcepic.html