Gerrit伺服器的搭建(Git+Gerrit+PostgreSQL+LDAP)

來源:互聯網
上載者:User

標籤:

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做反向 Proxy
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]: [email protected][email protected]‘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做反向 Proxy,需要配置不過配置~/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] <[email protected]>[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

配置好後,啟動Gerrit,需要用絕對路徑

/home/gerrit2/review_site/bin/gerrit.sh start

在瀏覽器輸入 http://localhost:8080 彈出Gerrit的頁面,終於成功了!

Gerrit伺服器的搭建(Git+Gerrit+PostgreSQL+LDAP)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.