ubuntu下gerrit+jenkins+gitee部署流程完整记录
注明:该篇文章是我部署完之后整理的,其实大部分内容都是参考网上的教程,但之所以要重新整理,是因为我在搜索资料的时候,很多给出来的方法并不能解决问题,而且会很花时间,在此整理出来,希望能给需要的朋友们一点帮助和节约一点时间。我也是一个新人,该文章还有很多不足的地方,我会不断更新和完善,我们也可以一起探讨。
1.配置前准备
1)在home目录下创建三个账号:gerrit,jenkins和svn:
sudo useradd -mgerrit
sudo passwd gerrit
sudo useradd -m jenkins
sudo passwd jenkins
sudo useradd -m svn
sudo passwd svn
2.编译环境检查
1)环境检查:
参考文档:https://source.android.com/setup/initializing
输入以下命令:
sudo apt-getupdate
sudo apt-getinstall openjdk-8-jdk
sudo apt-getinstall git-core gnupg flex bison gperf build-essential zip curl zlib1g-devgcc-multilib g++-multilib
2)解压编译
sudo apt installp7zip-full
7za xandroid-8.0.0_r1.7z -r -o./
sourcebuild/envsetup.sh
choosecombo
make -j8
★遇到的问题:
①问题如下:
解决办法:安装openjdk-8-jdk-headless。
②问题如下:
解决办法:添加源
③新建用户后,切换到该用户只显示$:
解决办法:
用root用户查看passwd文件
cat /etc/passwd
默认的shell为/bin/sh,改为bash。
④编译时遇到以下问题。
解决办法:
在/etc/profile中加入export LC_ALL=C,然后source /etc/profile即可。
⑤编译时遇到以下问题。
解决办法:
sudo apt-get install libxml2-utils
3.gerrit安装与配置
参考文档:https://blog.****.net/xbl1986/article/details/18450681
http://www.cnblogs.com/tesky0125/p/5877536.html
https://blog.****.net/wangjicong_215/article/details/77800082
1)环境准备
① java环境
java环境在编译环境搭建时已安装,检测如下:
java -version
然后进行配置:vim ~/.bashrc(针对当前用户)or vim /etc/profile(针对所有用户,推荐)
export JAVA_HOME= /usr/lib/jvm/java-8-openjdk-amd64/
exportJRE_HOME=$JAVA_HOME/jre
exportCLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
source /etc/profile
② git环境
gerrit依赖,用来操作gitrepository。
安装:
sudo apt-getinstall git
验证:
git --version
③ gerrit环境
准备gerrit安装包
④ apache2环境
安装:
sudo apt-getinstall apache2
验证:
sudo/etc/init.d/apache2 start
2)安装与配置gerrit
① 配置gerrit
默认安装:
java -jar gerrit-2.12.4.war init --batch -d /home/gerrit/review_site
更新配置文件:
vim /home/gerrit/review_site/etc/gerrit.config
具体配置如下:
[gerrit]
basePath = git
canonicalWebUrl =http://127.0.0.1:8081/
[database]
type = h2
database =/home/gerrit/review_site/db/ReviewDB
[index]
type = LUCENE
[auth]
type = HTTP
[receive]
enableSignedPush = false
[sendemail]
smtpServer = localhost
[container]
user = gerrit
javaHome = /usr/lib/jvm/java-8-openjdk-amd64/jre
[sshd]
listenAddress = *:39418
[httpd]
listenUrl = http://*:8081/
[cache]
directory = cache
②配置apache2反向代理
在apache2安装目录下新建httpd.conf并编辑:
<VirtualHost*:8090>
ServerName localhost
ProxyRequests Off
ProxyVia Off
ProxyPreserveHost On
<Proxy *:8090>
Order deny,allow
Allow from all
</Proxy>
<Location "/login/">
AuthType Basic
AuthName "Gerrit Code Review"
AuthBasicProvider file
AuthUserFile /home/gerrit/review_site/etc/passwd
Require valid-user
</Location>
ProxyPass / http://127.0.0.1:8081/
ProxyPassReverse / http://127.0.0.1:8081/
SetEnv force-proxy-request-1.0.1
SetEnv proxy-nokeepalive 1
</VirtualHost>
然后更新apache2.conf文件,将httpd.conf文件include进来,即在apache2.conf文件文件结尾加上以下内容:
Include httpd.conf
接下来更新ports.conf:
NameVirtualHost*:80
NameVirtualHost*:8090
Listen 80
Listen 8090
……
最后,开启SSL、Proxy、Rewrite等模块:
cd /etc/apache2/mods-enabled
ln -s../mods-available/proxy.load
ln -s../mods-available/proxy.conf
ln -s../mods-available/proxy_http.load
ln -s../mods-available/proxy_balancer.conf
ln -s../mods-available/proxy_balancer.load
ln -s ../mods-available/rewrite.load
ln -s../mods-available/ssl.conf
ln -s../mods-available/ssl.load
ln -s ../mods-available/socache_shmcb.load
ln -s ../mods-available/slotmem_shm.load
③配置gerrit账户密码
htpasswd -b –c/home/gerrit/review_site/etc/passwd gerrit 12345 #管理员
htpasswd -b /home/gerrit/review_site/etc/passwd jenkins12345 #普通用户,后面会用到
④启动gerrit和apache2,配置即完成。
/home/gerrit/review_site/bin/gerrit.shstart
sudo/etc/init.d/apache2 restart
★遇到的问题:
①问题描述:当遇到gerrit或apache2启动失败时,一般都是配置文件中有错误,需检查配置文件:
解决办法:需检查配置文件。
②问题描述:配置好gerrit和apache2之后,gerrit启动失败。
查看error_log发现。
修改gerrit的配置,将listenAddress= *:29418修改为listenAddress =*:39418。
③问题描述:配置好gerrit和apache2之后,gerrit页面如下所示。
解决办法:当时被这个问题困扰了很久,也搜了很多解决办法,但是都没有解决。若出现该界面,卿检查以上gerrit的配置,一定是配置不对。
4.jenkins安装与配置
参考文档:https://blog.****.net/evankaka/article/details/50518959
1)配置Tomcat
将tomcat安装包放到/home/jenkins/下,然后进行解压:
tar -zxvf apache-tomcat-8.5.29.tar.gz
进入tomcat的bin文件夹下编辑setclasspath.sh文件,添加如下内容:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/
export JRE_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre
2)配置jenkins
将jenkins压缩包放到tomcat安装目录下的webapps下。然后启动tomcat即可。
★遇到的问题:
①tomcat可以访问,jenkins不能访问时,需将tomcat解压目录下bin下shutdown.sh执行,再执行startup.sh就ok了。
②改端口:修改/conf下server.xml对应端口号即可。
③不能shutdown tomcat。
解决办法:
a./etc/profile中export中的“=”两端有空格,去掉空格。
b.未执行source/etc/profile更新配置。
5.svn安装与配置
参考文档:https://www.linuxidc.com/Linux/2016-08/133961.htm
6.Gerrit+Jenkins+码云对接
参考文档:https://www.cnblogs.com/jiangzhaowei/p/7927382.html
1)码云配置
①在码云上新建项目test-project001。
参考文档:https://jingyan.baidu.com/article/48a420571a0971a92425041c.html
2)gerrit配置
①在linux服务器上切换到gerrit账号下生成公私钥。
ssh-****** -t rsa-C [email protected]
将id_rsa.pub公钥内容更新到gerrit上(管理员gerrit账号登陆)的SSHPublic Keys里。
同样的,将jenkins账号也在linux服务器上生产公私钥,并将其公钥id_rsa.pub内容更新到其账号登陆的gerrit的SSHPublic Keys里。
②管理员登录gerrit
Projects->List->All-Projects
Projects->Access
Global Capabilities->Stream Events,点击 Non-Interactive Users
添加jenkins用户到‘Non-InteractiveUsers’组。
3)jenkins配置
先安装Gerrit Trigger插件,然后设置Gerrit Trigger。
Add New Server : Check4Gerrit
勾选 Gerrit Server With Default Configurations。
具体设置如下:
设置好之后,点击“Test Connection”,如果测试连接出现如下的Success,即表示连接成功!点击左下方的Save保存。
4)Gerrit和Jenkins整合
①让Gerrit支持Jenkins
如果安装Gerrit时没有或者没有选择添加Verified标签功能[‘lable Verified’],需要自己添加,添加步骤如下。
cd/home/gerrit/review_site/git/
git cloneAll-Projects.git ddddd
cd ddddd
vi project.config
添加一段verified Lable在最后面:
[label"Verified"]
function = MaxWithBlock
value = -1 Fails
value = 0 No score
value = +1 Verified
然后提交。
git config--global user.email [email protected]
git config--global user.name "gerrit"
git commit -a -m"Add Label Verified"
git push originHEAD:refs/meta/config
在Projects的Access栏里,针对Reference:refs/heads/项添加 Verified功能,如下:Projects->List->All-Projects
Projects->Access->Edit->找到Reference:refs/heads/*项->AddPermission->Label Verified->Group Name里输入Non-InteractiveUsers->回车或者点击Add按钮->在最下面点击SaveChanges保存更改。
②安装git review
git clone git://github.com/facebook/git-review.git
cdgit-review
python setup.pyinstall
pip installgit-review==1.21
apt installreadline-devel
以上方法可能有些问题,安装可用以下方法
sudo apt-getinstall git-review
添加.gitreview文件
git clone [email protected]:whbjc_technology_co_ltd_hck831/test-project001.git
cd test-project1
vim .gitreview
.gitreview具体配置如下。
[gerrit]
host=192.168.1.118
port=39418
project=test-project001.git
添加.gitreview到版本库。
git add .gitreview
git commit.gitreview -m 'add .gitreview file by gerrit.'
git push originmaster
疑问:参考文档中添加了.testr.conf文件,但不知道该文件是否必须添加,暂时不添加。
③在Gerrit上创建test-project001项目
在Gerrit上创建相同的项目test-project001(与码云上一致)。然后clone--bare Gitlab上的仓库到 Gerrit。
cd /home/gerrit/review_site/git/ //即登陆到gerrit安装目录的git下
rm -frtest-project001.git
//创建并将远程gitlab上的这个项目内容发布到gerrit上
git clone --bare [email protected]:whbjc_technology_co_ltd_hck831/test-project001.git
④配置replication.config文件
cd/home/gerrit/review_site/etc/
vimreplication.config
配置如下。
[remote"test-project001"]
projects =test-project001
url = [email protected]:whbjc_technology_co_ltd_hck831/test-project001.git
push =+refs/heads/*:refs/heads/*
push =+refs/tags/*:refs/tags/*
push =+refs/changes/*:refs/changes/*
threads = 3
⑤配置gerrit用户的 ~/.ssh/config
Host gitee.com:
IdentityFile~/.ssh/id_rsa
PreferredAuthenticationspublickey
⑥在gerrit用户的~/.ssh/known_hosts中,给gitee.com添加rsa**。
sh -c"ssh-keyscan -t rsa gitee.com >> /home/gerrit/.ssh/known_hosts"
sh -c"ssh-****** -H -f /home/gerrit/.ssh/known_hosts"
⑦重新启动Gerrit服务
/home/gerrit/review_site/bin/gerrit.shrestart
⑧在Jenkins上创建test-project001任务。
具体配置如下。
★遇到的问题:
①设置Gerrit Trigger时出现以下问题(不一定是图中错误,但都是会报错):
a.以管理员账号(gerrit)登录192.168.1.118这台服务器,执行命令,新建jenkins用户(这个是gerrit网页登录的jenkins用户)
sudo htpasswd -b /home/gerrit/review_site/etc/passwdjenkins 123456
b.然后用jenkins用户身份登录gerrit页面,添加对应的SSHPublic Keys。
c.然后用管理员账号登录gerrit页面,依次点击Projects->List->All-Projects
Projects->Access,Global Capabilities->StreamEvents点击Non-Interactive Users,添加Jenkins用户到‘Non-InteractiveUsers’组,如图所示。
②jenkins不能通过gerrit触发自动构建
参考文档:https://blog.****.net/cuiaamay/article/details/49002883
③git review时遇到以下问题
解决办法:
在gerrit上面添加sshkey。
④执行sudo pipinstall testrepository 时出现You are using pipversion 8.1.1, however version 9.0.1 is available.
解决办法:
sudo apt-getupdate
sudo apt-getupgrade
sudo wget https://bootstrap.pypa.io/get-pip.py
sudo python3get-pip.py
⑤执行git review时出现以下现象:
解决办法:重装git-review
sudo apt-getautoremove --purge git-review
which git-review
rm -rf/usr/local/bin/git-review
sudo apt-getinstall git-review
⑥重装git-review之后又出现一下问题
解决办法:
git remote addgerrit ssh://[email protected]:39418/test-project2.git
然后出现以下错误:
修改home/huchenkang/.ssh/config,加入
Host 192.168.1.109
KexAlgorithms +diffie-hellman-group1-sha1
然后又出现了以下错误。
该问题暂时没解决。
⑦code无法从gerrit同步到码云
解决办法:
a.查看是否安装replication插件
b.若没安装,则安装,安装前先停掉gerrit。注意,安装插件时,当前目录要有gerrit安装包
java -jargerrit-2.12.4.war init -d review_site --batch --install-plugin replication
再安装几个插件。
java -jargerrit-2.12.4.war init -d review_site --batch --install-plugin reviewnotes
java -jargerrit-2.12.4.war init -d review_site --batch --install-plugin commit-message-length-validator
java -jargerrit-2.12.4.war init -d review_site --batch --install-plugin download-commands
安装完后重启gerrit。但是还是不能同步,查看replication_log。
重新生成gerrit用户的**,后面不带邮箱。
ssh-****** -t rsa
再将**加到码云中就可以了。
7.权限配置
①在本地生成公钥,添加到码云上。
ssh-****** -t rsa-C [email protected]
②添加git账号
git config--global user.email "[email protected]"
git config--global user.name "huchengkang"
③创建gerrit账号并将公钥添加到gerrit网页对应账号中
htpasswd -b /home/gerrit/review_site/etc/passwd huchengkang 12345
注:每增加一个项目需修改replication.config文件。
=======================================================================
如有疑问可留言,我会尽快回复,也可加我qq一起探讨,共同进步!(qq号:327863839)