ฉันตัดสินใจที่จะตอบคำถามนี้ต่อไปเพราะเป็นสิ่งที่จำเป็นสำหรับชุมชน Gerrit ปัจจุบันยังไม่มีบทเรียนจำนวนมากครอบคลุมการตั้งค่าขั้นสูงสำหรับ Gerrit ฉันหวังว่าสิ่งนี้จะช่วยให้ผู้อื่นสำรวจแนวทางปฏิบัติ XP / Agile และทำให้ Gerrit ทำงานได้ เป็นเครื่องมือที่ยอดเยี่ยมเมื่อคุณผ่านความท้าทายและรายละเอียดการตั้งค่าที่ละเอียดอ่อนทั้งหมด
บทช่วยสอนการติดตั้งนี้มีลักษณะเฉพาะที่จะให้บริการสภาพแวดล้อมเฉพาะ
- เซิร์ฟเวอร์ Windows 2008
- PostgreSQL
- แมวตัวผู้
- LDAP ผ่าน Active Directory
- Gerrit
- msysgit
ก่อนที่จะเริ่มตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งคอมไพล์ในระบบของคุณแล้ว ดาวน์โหลดเครื่องมือบรรทัดคำสั่ง msysgit ล่าสุดสำหรับ windows จากhttp://code.google.com/p/msysgit/downloads/list
ตรวจสอบให้แน่ใจว่าคุณได้รับ "Full installer สำหรับ Git อย่างเป็นทางการสำหรับ Windows"
- ติดตั้ง MSysGit
- ใช้ค่าเริ่มต้นเมื่อได้รับแจ้ง
- กำหนดค่า Git
หากคุณตั้งใจจะใช้รุ่น GitWeb ใน msysgit คุณจะสังเกตเห็นปัญหาบางอย่างเกี่ยวกับ CGI.pm ฉันต้องการพูดถึงการแก้ไขเพื่อแก้ไขปัญหานี้
Perl รวมกับ msysgit distro เป็นของ 1.7.8, เสียhttp://groups.google.com/group/msysgit/browse_thread/thread/ba3501f1f0ed95af โฟลเดอร์ unicore หายไปพร้อมกับ utf8_heavy.pl และ CGI.pm คุณสามารถตรวจสอบโดยการตรวจสอบโมดูล Perl:
perl -mCGI -mEncode -mFcntl -mFile :: ค้นหา -mFile :: Basename -e "" คุณอาจจะพบกับข้อยกเว้นต่อไปนี้:
$ perl -mCGI -mEncode -mFcntl -mFile :: ค้นหา -mFile :: Basename -e "" ไม่พบ CGI.pm ใน @INC (@INC ประกอบด้วย: /usr/lib/perl5/5.8.8/msys / usr / lib / p erl5 / 5.8.8 /usr/lib/perl5/site_perl/5.8.8/msys /usr/lib/perl5/site_perl/5.8.8 / u sr / lib / perl5 / site_perl.) BEGIN ล้มเหลว - การรวบรวมถูกยกเลิก
หากคุณไม่มี CGI.pm คุณจะต้องปรับใช้โมดูลกับสภาพแวดล้อม msys: คุณจะต้องดึงโมดูลเหล่านั้นออกจาก 5.8.8 distro บน:
http://strawberryperl.com/releases.html
ไฟล์: strawberry-perl-5.8.8.3.zip
เนื้อหา: bin / lib / site /
คัดลอกเนื้อหาของ lib ลงใน msysgit / lib / perl5 / 5.8.8 และเขียนทับไฟล์ที่มีอยู่
หากใช้ commandline git ให้เพิ่มการตั้งค่าส่วนกลางของคุณไปที่ git:
git config --global user.name "Your Name"
git config --global user.email you@corporation.com
git config --global core.autocrlf false
ตรวจสอบให้แน่ใจว่าข้อมูลรับรองที่ใช้ที่นี่ตรงกับข้อมูลรับรองใน gerrit มิฉะนั้น gerrit จะปฏิเสธคำขอของคุณ
คำแนะนำสำหรับการติดตั้งและกำหนดค่า Gerrit มีดังนี้:
- ขั้นแรกให้ลงชื่อเข้าใช้เซิร์ฟเวอร์ที่โฮสต์ postgres และสร้างผู้ใช้และฐานข้อมูลสำหรับ Gerrit
- createuser - ชื่อผู้ใช้ = postgres -A -D -P -E gerrit2
- createdb - ชื่อผู้ใช้ = postgres -E UTF-8 -O gerrit2 reviewdb
- ตอนนี้ให้สลับกลับไปที่โฮสต์ถ้าต่างกันสำหรับ Gerrit และสร้าง 3 ไดเรกทอรีสำหรับการปรับใช้ Gerrit
- สร้างไดเร็กทอรีการติดตั้งพื้นฐานสำหรับ gerrit โดยควรเป็นไดเร็กทอรีเวอร์ชันสำหรับเนื้อหาการปรับใช้สงคราม
- สร้างไดเรกทอรีย่อยสำหรับคราว
- สร้างไดเร็กทอรี config สำหรับการปรับใช้สกีมาและการกำหนดค่า
- เนื้อหาควรมีลักษณะเช่นนี้:
- Gerrit
- แมวตัวผู้
- การตั้งค่า
- Gerrit-XX
- ดาวน์โหลด tomcat จากhttp://tomcat.apache.org/download-60.cgi
- หมายเหตุ: Linux ส่วนใหญ่จะมีให้ใช้งานได้จากผู้จัดการการอัพเดท ตัวอย่าง: ใช้ Synaptic บน Ubuntu
- ปรับใช้การติดตั้ง Tomcat ของคุณไปยังไดเรกทอรี Tomcat
- ดาวน์โหลด gerrit.war ล่าสุดจาก
http://code.google.com/p/gerrit/downloads/list
- คัดลอกไฟล์ไปยังไดเรกทอรีฐาน gerrit
- แตกไฟล์ war ไปยังไดเร็กทอรีย่อย gerrit-XX
- CD ไปที่ไดเร็กทอรีฐาน gerrit และรัน
java -jar gerrit-2.4-rc0.war
init -d config
- การกำหนดค่านี้รวมถึงความพิเศษสำหรับ LDAP และการทำงานหลังพร็อกซีอย่ากำหนดค่าตัวเลือกเหล่านี้หากไม่ต้องการ
ดำเนินการ:
C:\your_path\gerrit>java -jar gerrit-2.4-rc0.war init -d config
*** Gerrit Code Review 2.4-rc0
***
Create 'C:\your_path\gitserver\gerrit\config' [Y/n]? Y
*** Git Repositories
***
Location of Git repositories [git]: C:\your_path\gitserver\repository\ha
*** SQL Database
***
Database server type [H2/?]: postgresql
Server hostname [localhost]: database.corp.local
Server port [(POSTGRESQL default)]:
Database name [reviewdb]:
Database username [Administrator]: gerrit2
gerrit2's password :
confirm password :
*** User Authentication
***
Authentication method [OPENID/?]: LDAP
LDAP server [ldap://localhost]: ldaps://ldap.corp.local:
636
LDAP username : CN=Administrator,CN=Users,DC=corp,DC=local
CN=Administrator,CN=Users,DC=corp,DC=local's password :
confirm password :
Account BaseDN [DC=corp,DC=local:636]: CN=Users,DC=corp,DC=l
ocal
Group BaseDN [CN=Users,DC=corp,DC=local]:
*** Email Delivery
***
SMTP server hostname [localhost]: smtp.corporation.com
SMTP server port [(default)]: 465
SMTP encryption [NONE/?]: SSL
SMTP username [Administrator]: build@corporation.com
build@corporation.com's password :
confirm password :
*** Container Process
***
Run as [Administrator]:
Java runtime [C:\Program Files\Java\jre6]:
Copy gerrit.war to C:\your_path\gitserver\gerrit\config\bin\gerrit.war [Y/n]?
Copying gerrit.war to C:\your_path\gitserver\gerrit\config\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]? 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]:
Initialized C:\your_path\gitserver\gerrit\config
Automatic startup not supported on Win32.
- ไม่ต้องกังวลกับการตั้งค่า Gerrit เป็นเซิร์ฟเวอร์เราจะกำหนดค่าในภายหลัง
- แก้ไข config \ etc \ gerrit.config
- ในส่วน gerrit ให้เพิ่มการตั้งค่าสำหรับ conicalWebUrl =
http://review.corporation.com/
- หากโครงการของคุณไม่เป็นไปตามรูปแบบ project.git ดั้งเดิมให้เพิ่มหัวข้อต่อไปนี้:
- เพิ่มไฟล์ locaiton และ url ไปยังเซิร์ฟเวอร์ gitweb ของคุณพร้อมกับคุณสมบัติที่เกี่ยวข้อง
อัพเดต gerrit.config:
[gitweb]
cgi = C:\\path to msysgit\\Git\\share\\gitweb\\gitweb.cgi
url = https://gitweb.corporation.com
type = custom
project = ?p=${project};a=summary
revision = ?p=${project};a=commit;h=${commit}
branch = ?p=${project};a=shortlog;h=${branch}
filehistory = ?p=${project};a=history;hb=${branch};f=${file}
- หากคุณใช้ http / https เพื่อแสดงเพิ่มต่อไปนี้:
อัพเดต gerrit.config:
[download]
scheme = http
- หากคุณใช้ LDAP กับไดเรกทอรีที่ใช้งานอยู่คุณจะต้องปรับแต่งการตั้งค่าของคุณเพิ่มการตั้งค่าเพิ่มเติมเพื่อสนับสนุนโฆษณา:
อัพเดต gerrit.config:
[ldap]
sslVerify = true
server = ldaps://ldap.corp.local:636
username = CN=Administrator,CN=Users,DC=corp,DC=local
accountBase = CN=Users,DC=corp,DC=local
accountPattern = (&(objectClass=person)(sAMAccountName=${username}))
accountFullName = displayName
accountEmailAddress = mail
accountSshUserName = sAMAccountName
groupBase = CN=Users,DC=corp,DC=local
groupMemberPattern = (sAMAccountName=${username})
groupName = cn
server.xml:
<Server port="8006" shutdown="SHUTDOWN">
<Service name="Catalina">
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps" unpackWARs="true">
<Context path="" docBase="C:\your_path\gitserver\gerrit\gerrit-2.4" debug="0" reloadable="false">
<Resource
name="jdbc/ReviewDb"
type="javax.sql.DataSource"
username="gerrit2"
driverClassName="org.postgresql.Driver"
password="secret"
url="dbc:postgresql://yourPsqlServer:5432/reviewdb"
/>
</Context>
</Host>
</Engine>
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"/>
<Connector port="8011" protocol="AJP/1.3" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
disableUploadTimeout="true" enableLookups="false"
acceptCount="100" URIEncoding="UTF-8" />
</Service>
</Server>
คุณไม่จำเป็นต้องใช้ตัวเชื่อมต่อ AJP ยกเว้นว่าคุณต้องการใช้ proxying กับ Apache HTTP Server ฉันใช้เพื่อลดการเข้ารหัส SSL และจัดการใบรับรอง เพียงลบออกหากไม่ต้องการ ตรวจสอบให้แน่ใจว่าได้เปลี่ยนพอร์ตตัวเชื่อมต่อ HTTP เป็น 80 หากคุณต้องการรันด้วยตัวเอง
การกำหนดค่าข้างต้นสำหรับการใช้งานกับ postgres หากคุณใช้ MySQL คุณจะต้องแทนที่ทรัพยากรด้วยข้อมูลต่อไปนี้สำหรับ MySQL:
server.xml:
<Resource
name="jdbc/ReviewDb"
type="javax.sql.DataSource"
username="gerrit2"
driverClassName="org.gjt.mm.mysql.Driver"
password="secret"
url="jdbc:mysql://yourMsqlServer/reviewdb?autoReconnect=true"
/>
ณ จุดนี้คุณพร้อมที่จะกำหนดค่า Gerrit เป็นบริการแล้วนำระบบการตรวจสอบออนไลน์
- ก่อนอื่นปรับการตั้งค่า Tomcat สำหรับเรียกใช้ Gerrit เป็นบริการ
- ไปที่ tomcat / bin และแก้ไข service.bat
อ็อพชัน jvm ถูกตั้งค่าแยกกันสำหรับเซอร์วิส nt คุณต้องแก้ไขไฟล์ service.bat ก่อนติดตั้งเซอร์วิส nt ไฟล์นี้อยู่ในไดเรกทอรี tomcat / bin พร้อมกับ startup.bat และสคริปต์ปิดระบบอื่น ๆ เลื่อนลงไปที่ส่วนต่อไปนี้:
"%EXECUTABLE%" //US//%SERVICE_NAME% \++JvmOptions "-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties" \--JvmMs 128 \--JvmMx 256
แก้ไขบรรทัดนี้เพื่อให้ตรงกับสิ่งต่อไปนี้:
"%EXECUTABLE%" //US//%SERVICE_NAME% \++JvmOptions "-Djava.io.tmpdir=%CATALINA_BASE%\temp;-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager;-Djava.util.logging.config.file=%CATALINA_BASE%\conf\logging.properties" \++JvmOptions="-XX:MaxPermSize=256m" \++JvmOptions="-XX:+CMSClassUnloadingEnabled" \++JvmOptions="-XX:+CMSPermGenSweepingEnabled" \--JvmMs 512 \--JvmMx 1024
หน่วยความจำเริ่มต้น jvmMs ควรถูกตั้งค่าเป็น 512Mb แน่นอนสำหรับ gerrit และ Extended JvmMx ถึง 1024Mb
ตอนนี้คุณพร้อมที่จะปรับใช้ gerrit เป็นบริการภายใต้ windows เพียงดำเนินการต่อไปนี้:
C:\your_path\gitserver\gerrit\tomcat\bin>service install gerrit
Installing the service 'gerrit' ...
Using CATALINA_HOME: "C:\your_path\gitserver\gerrit\tomcat"
Using CATALINA_BASE: "C:\your_path\gitserver\gerrit\tomcat"
Using JAVA_HOME: "C:\Program Files\Java\jdk1.6.0_31"
Using JVM: "C:\Program Files\Java\jdk1.6.0_31\jre\bin\server\jvm.dl
l"
The service 'gerrit' has been installed.
C:\your_path\gitserver\gerrit\tomcat\bin>
ไปที่ผู้จัดการเซิร์ฟเวอร์ของคุณและเปิดโหนดบริการ เปิดคุณสมบัติสำหรับ Gerrit และตรวจสอบให้แน่ใจว่าคุณได้ตั้งประเภทเริ่มต้นเป็นอัตโนมัติ:
ใช้และปิดกล่องโต้ตอบ
ตกลง ... เราเสร็จแล้วหรือยัง น่าเสียดายไม่ใช่แค่อีกไม่กี่ก้าวก็ถึงแล้ว อดทนหน่อย.
ตอนนี้คุณพร้อมที่จะเริ่มบริการแล้ว เพียงเน้นบริการ Gerrit และคลิกตัวเลือกเริ่มทางด้านซ้าย
ตรวจสอบบันทึกภายใต้ไดเรกทอรี Tomcat / บันทึก ตรวจสอบให้แน่ใจว่าไม่มีข้อผิดพลาดที่โดดเด่น หากคุณมีปัญหาคุณสามารถถามคำถามได้ที่นี่หรือในรายชื่อผู้รับจดหมาย gerrit:
http://groups.google.com/group/repo-discuss
คุณควรจะข้ามเบราว์เซอร์ของคุณและป้อน URL ของเซิร์ฟเวอร์ของคุณเพื่อดู Gerrit ตอนนี้: http://review.corporation.com:8080
คุณจะได้รับแจ้งให้ใส่รหัสสาธารณะ ssh ของคุณ สิ่งนี้จำเป็นเฉพาะเมื่อคุณต้องการใช้ Git / Gerrit ผ่าน ssh แทน HTTP ฉันไปข้างหน้าและตั้งค่าเพราะเป็นตัวเลือกที่ดีที่จะมี
กำหนดค่า SSH
สร้างคีย์ ssh สำหรับการเข้าถึง:
ผู้ดูแลระบบ @ SERVER ~ / ทดสอบ $ ssh-keygen -t rsa
ลงทะเบียนบัญชีใหม่ใน Gerrit ผ่านเว็บอินเตอร์เฟสด้วยที่อยู่อีเมลที่คุณเลือก ผู้ใช้รายแรกที่ลงชื่อเข้าใช้และลงทะเบียนบัญชีจะถูกวางไว้ในกลุ่มผู้ดูแลระบบที่ได้รับสิทธิพิเศษโดยอัตโนมัติอนุญาตให้มีการจัดการเซิร์ฟเวอร์ผ่านทางเว็บและผ่าน SSH ผู้ใช้ที่ตามมาจะถูกลงทะเบียนโดยอัตโนมัติในฐานะผู้ใช้ที่ไม่มีสิทธิ์
เมื่อลงชื่อเข้าใช้ในฐานะผู้ใช้ของคุณคุณจะพบตัวช่วยสร้างเล็กน้อยเพื่อเริ่มต้นใช้งาน ตัวช่วยสร้างช่วยให้คุณกรอก:
กำหนดค่าการเข้าถึง HTTP สำหรับผู้ใช้ที่ลงทะเบียนเท่านั้นเว้นแต่โครงการของคุณจะเปิดให้บุคคลทั่วไปเข้าใช้:
สร้างรหัสผ่าน HTTP
แม้จะมีการกำหนดค่าการเข้าสู่ระบบของคุณเองคุณยังต้องสร้างรหัสผ่านสำหรับ gerrit ไปยังเซิร์ฟเวอร์ผ่าน http / https ไปที่การตั้งค่า> รหัสผ่าน HTTP และคลิกที่ 'สร้างรหัสผ่าน' ใช้รหัสผ่านนี้สำหรับการทำงานคอมไพล์ทั้งหมดผ่าน http (s)
ตอนนี้เราสามารถทดสอบ Gerrit ผ่าน HTTP คุณควรจะสามารถโคลนโครงการใด ๆ ที่มีอยู่ในพื้นที่เก็บข้อมูลที่คุณอ้างถึงในการกำหนดค่า Gerrit
ทดสอบด้วยการใช้งานโคลน
Administrator@SERVER ~/test
$ git clone https://review.corporation.com/sandbox
ทดสอบบัญชี ssh ของคุณ
Administrator@SERVER~/test
$ ssh jhuntley@localhost -p 29418
**** Welcome to Gerrit Code Review ****
Hi Jason Huntley, you have successfully connected over SSH.
Unfortunately, interactive shells are disabled.
To clone a hosted Git repository, use:
git clone ssh://jhuntley@review.corporation.com:29418/REPOSITORY_NAME.g
it
Connection to localhost closed.
โคลนโครงการจาก Gerrit ผ่าน SSH:
Administrator@SERVER~/test
$ git clone ssh://jhuntley@127.0.0.1:29418/sandbox
Cloning into 'sandbox'...
remote: Counting objects: 183, done
remote: Finding sources: 100% (183/183)
remote: Total 183 (delta 0), reused 0 (delta 0)Receiving objects: 50% (92/183)
Receiving objects: 52% (96/183)
Receiving objects: 100% (183/183), 23.76 KiB, done.
หากคุณยังไม่ยอมแพ้ในตอนนี้คุณสามารถผ่อนคลายได้คุณควรหาระบบ Gerrit Code Review ที่ใช้งานได้ซึ่งโฮสต์โดยเซิร์ฟเวอร์ Windows 2008 :) มันไม่เหมือนการติดตั้งทั่วไปและอย่างที่คุณสามารถบอกได้ ขั้นตอน อย่างไรก็ตามเราบางคนมีทรัพยากร จำกัด และสามารถใช้สิ่งที่มีให้เท่านั้น ฉันหวังว่าบทช่วยสอนนี้จะช่วยผู้ที่ต้องการเรียกใช้ Gerrit ในสภาพแวดล้อมที่คล้ายคลึงกัน คุณควรพร้อมแล้วที่จะเริ่มใช้ Gerrit! สนุก!
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการใช้ Gerrit โปรดปรึกษากับคู่มือผู้ใช้จากโครงการ Gerrit:
http://gerrit-documentation.googlecode.com/svn/Documentation/2.3/index.html
ขอบคุณShawn Pierceสำหรับความช่วยเหลือเกี่ยวกับ IRC!
สำหรับการอ้างอิงในอนาคต
บทช่วยสอนถูกแปลงเป็นเอกสารสำหรับโครงการ Gerrit สำหรับผู้ที่สนใจและต้องการการอ้างอิงที่ดี โปรดดูคำขอแพตช์ที่นี่:
https://gerrit-review.googlesource.com/#/c/37072