Gerrit服务器的搭建(Git+Gerrit+PostgreSQL+LDAP)
来源:互联网 发布:软件开发挣钱吗 编辑:程序博客网 时间:2024/06/05 17:34
Gerrit简介
Gerrit是搭建在Git之上的基于Web的代码审查工具。大家都知道Git是一个分布式的代码版本管理工具,常用于多人协作开发的工作环境中,程序员将自己修改的代码提交到本地版本库,然后再push到远程的中央版本库中,见图1。这个过程中,代码的提交是没有经过审核的,对于分布在多个地点的团队来说,不能互相审查、评论其他人的代码,非常不利于代码质量的控制。而Gerrit就是用来进行代码审查的工具,程序员push到中央版本库的代码,首先要经过团队中Reviewers的审查,被接受后才会真正提交到版本库中,见图2。
Gerrit服务器的搭建(Git+Gerrit+PostgreSQL+LDAP)
1 总览
操作系统Ubuntu,需要安装
- Git,代码版本管理
- Java,最低1.7版本,Gerrit安装包是个war包
- 数据库,Gerrit支持H2(内置) / MySQL / PostgreSQL,本安装选择PostgreSQL,完全开源且适合大规模数据的部署
- 身份认证,审核的前提是做身份认证来登陆Web,Gerrit支持OpenID / HTTP / LDAP,本安装选择已经搭建好的LDAP,但会讲解HTTP方式的认证,需要Apache做反向代理
2 Git安装
sudo apt-get install git
3 JDK8安装
Ubuntu14.10及以上版本的Ubuntu官方软件中心里有OpenJDK java 8,可以直接用apt-get安装,低版本得从PPA(Personal Package Archives 个人软件包集)中安装。
sudo add-apt-repository ppa:openjdk-r/ppasudo apt-get update sudo apt-get install openjdk-8-jdk
配置Java环境变量
- PATH,指定命令搜索路径,在shell下执行命令时,会到PATH变量指定的路径中查找相应命令程序,如java/javac
- CLASSPATH,指定类搜索路径,JVM通过它寻找类
- JAVA_HOME,其他软件通过它找到jdk的安装目录
vi /etc/profileexport JAVA_HOME=/usr/lib/jvm/jdk1.7.0_21 export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATHsource /etc/profilejava -version
如果安装了多个jdk,就选择一个默认的
sudo update-alternatives --config javasudo update-alternatives --config java
4 PostgreSQL安装
sudo apt-get install postgresql
初次安装后,会默认生成名为postgres的Linux系统用户、数据库和数据库用户(作为数据库管理员),首先修改postgres数据库用户的密码,然后增加Gerrit需要的数据库
sudo -u postgres psqlpostgres=# \password postgres(input password twice)postgres=# \q
sudo -u postgres createuser -RDIElPS gerrit2sudo -u postgres psqlpostgres=# \password gerrit2(input password twice)sudo -u postgres createdb -E UTF-8 -O gerrit2 reviewdb
5 Gerrit安装
从官网下载Gerrit的安装包,为了方便改名为gerrit.war,建议创建一个Linux用户来安装,本人安装在gerrit2用户的review_site目录下
sudo adduser gerrit2sudo su gerrit2java -jar gerrit.war init -d /home/gerrit2/review_site
然后就会进行很多配置,大部分默认即可,要注意的是数据库和身份认证,这些配置也可以在安装完成后在~/review_site/etc/gerrit.config文件中修改。
以下是别人的配置,他是用MySQL+Nginx做HTTP认证,这里贴出来只是让大家看下大概的安装步骤,仅供参考:
# java -jar gerrit-2.8.war init -d /etc/gerrit/*** Gerrit Code Review 2.8***Create '/etc/gerrit' [Y/n]? y*** Git Repositories***Location of Git repositories [git]:*** SQL Database***Database server type [h2]: mysqlGerrit Code Review is not shipped with MySQL Connector/J 5.1.21** This library is required for your configuration. **Download and install it now [Y/n]? yDownloading http://repo2.maven.org/maven2/mysql/mysql-connector-java/5.1.21/mysql-connector-java-5.1.21.jar ... OKChecksum mysql-connector-java-5.1.21.jar OKServer hostname [localhost]:Server port [(mysql default)]:Database name [reviewdb]: gerritdbDatabase username [root]: gerritusergerrituser's password : confirm password :*** User Authentication***Authentication method [OPENID/?]: httpGet username from custom HTTP header [y/N]? nSSO logout URL :*** Email Delivery***SMTP server hostname [localhost]: smtp.googlemail.comSMTP server port [(default)]: 587SMTP encryption [NONE/?]: tlsSMTP username [root]: gerrit@thstack.comreview@thstack.com's password : confirm password :*** Container Process***Run as [root]:Java runtime [/usr/lib/jvm/java-6-openjdk-amd64/jre]:Copy gerrit-2.8.war to /etc/gerrit/bin/gerrit.war [Y/n]? yCopying gerrit-2.8.war to /etc/gerrit/bin/gerrit.war*** SSH Daemon***Listen on address [*]:Listen on port [29418]:Gerrit Code Review is not shipped with Bouncy Castle Crypto v144 If available, Gerrit can take advantage of features in the library, but will also function without it.Download and install it now [Y/n]? yDownloading http://www.bouncycastle.org/download/bcprov-jdk16-144.jar ... OKChecksum bcprov-jdk16-144.jar OKGenerating SSH host key ... rsa... dsa... done*** HTTP Daemon***Behind reverse proxy [y/N]? yProxy uses SSL (https://) [y/N]? nSubdirectory on proxy server [/]:Listen on address [*]:Listen on port [8081]: 8082Canonical URL [http://www.thstack.com/]: http://review.thstack.com/*** Plugins***Install plugin reviewnotes version v2.8 [y/N]? yInstall plugin download-commands version v2.8 [y/N]? yInstall plugin replication version v2.8 [y/N]? yInstall plugin commit-message-length-validator version v2.8 [y/N]? yInitialized /etc/gerritExecuting /etc/gerrit/bin/gerrit.sh startStarting Gerrit Code Review: OKWaiting for server on review.thstack.com:80 ... OKOpening http://review.thstack.com/#/admin/projects/ ...FAILEDOpen Gerrit with a JavaScript capable browser:http://review.thstack.com/#/admin/projects/
我试过用Apache做反向代理,需要配置不过配置~/review_site/etc/gerrit.config还有/etc/apache2/httpd.conf,还是有点问题,总是报Authorization header的错误,最后选择了LDAP认证,LDAP服务器是公司已经搭好的,直接用了。
最后,我的~/review_site/etc/gerrit.config如下:
[gerrit] basePath = git canonicalWebUrl = https://localhost:8080[database] type = postgresql hostname = localhost database = reviewdb username = gerrit2[auth] type = LDAP[ldap] server = ldaps://xx:xx accountBase = xx accountPattern = (&(objectClass=person)(uid=${username})) accountFullName = cn accountEmailAddress = mail accountSshUserName = uid referral = follow groupBase = xx groupScope = one[sendemail] smtpServer = localhost from = ${user} [review] <xx@xx.com>[container] user = gerrit javaHome = /usr/lib/jvm/java-8-openjdk-amd64/jre[sshd] listenAddress = *:29418[download] scheme = ssh scheme = http[httpd] listenUrl = proxy-http://localhost:8080[cache] directory = cache[http] proxy = http://xx:xx[gitweb] cgi = /usr/lib/cgi-bin/gitweb.cgi[cache "web_sessions"] maxAge = 1 month
这里集成了GitWeb,它是一个支持Git的CGI程序,能够从浏览器追踪Git项目
sudo apt-get install gitweb
配置好gerrit.config文件后,启动Gerrit,需要用绝对路径
/home/gerrit2/review_site/bin/gerrit.sh start
在浏览器输入 http://localhost:8080 弹出Gerrit的页面,终于成功了!
- Gerrit服务器的搭建(Git+Gerrit+PostgreSQL+LDAP)
- git 服务器搭建之gerrit
- LDAP + Gerrit搭建code review系统(三) --- Gerrit
- 12.04 GIt服务器之gerrit搭建
- git学习--gerrit服务器搭建总结
- LDAP + Gerrit搭建code review系统(二) --- LDAP
- 【Gerrit】添加git工程到gerrit服务器
- Gerrit 服务器搭建
- Gerrit 服务器搭建
- inux搭建gerrit服务器
- Gitolite+Gerrit服务器搭建
- gerrit服务器搭建总结
- Ubuntu 上 gerrit 服务器的搭建
- LDAP + Gerrit搭建code review系统(一) --- 简介
- LDAP + Gerrit搭建code review系统(四) --- backup备份
- gerrit的搭建
- 【Gerrit】gerrit server搭建
- 搭建git+gerrit+repo代码
- 开源集合-最火的Android开源项目(二)
- C++生成54个不同的随机数
- Hadoop问题汇总
- Odoo(OpenERP)应用实践:办公用品的领用及归还
- JSONObject和JSONArray的区别
- Gerrit服务器的搭建(Git+Gerrit+PostgreSQL+LDAP)
- 跳槽要遵守的11条守则
- 高性能mysql笔记---mysql服务器性能剖析[-2-]
- HDOJ 1042 N!(大数阶乘)
- myeclipse导出war包时抛出空指针异常
- 第3章 15
- Android Design Support Library 中控件的使用简单介绍
- LED防爆灯
- Android自动检测版本及自动升级