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

 

遇到的问题:

①问题如下:

ubuntu下gerrit+jenkins+gitee部署流程完整记录

解决办法:安装openjdk-8-jdk-headless。

 

②问题如下:

ubuntu下gerrit+jenkins+gitee部署流程完整记录

解决办法:添加源

 

③新建用户后,切换到该用户只显示$:

ubuntu下gerrit+jenkins+gitee部署流程完整记录

解决办法:

用root用户查看passwd文件

cat /etc/passwd

ubuntu下gerrit+jenkins+gitee部署流程完整记录

默认的shell为/bin/sh,改为bash。

ubuntu下gerrit+jenkins+gitee部署流程完整记录

 

④编译时遇到以下问题。

ubuntu下gerrit+jenkins+gitee部署流程完整记录

解决办法:

在/etc/profile中加入export LC_ALL=C,然后source /etc/profile即可。

 

编译时遇到以下问题。

ubuntu下gerrit+jenkins+gitee部署流程完整记录

解决办法:

sudo apt-get install libxml2-utils

 

3.gerrit安装与配置

参考文档:https://blog.csdn.net/xbl1986/article/details/18450681

http://www.cnblogs.com/tesky0125/p/5877536.html

https://blog.csdn.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启动失败时,一般都是配置文件中有错误,需检查配置文件:

ubuntu下gerrit+jenkins+gitee部署流程完整记录

ubuntu下gerrit+jenkins+gitee部署流程完整记录

解决办法:需检查配置文件。

 

②问题描述:配置好gerrit和apache2之后,gerrit启动失败。

ubuntu下gerrit+jenkins+gitee部署流程完整记录

查看error_log发现。

ubuntu下gerrit+jenkins+gitee部署流程完整记录

修改gerrit的配置,将listenAddress= *:29418修改为listenAddress =*:39418。

 ubuntu下gerrit+jenkins+gitee部署流程完整记录


③问题描述:配置好gerrit和apache2之后,gerrit页面如下所示。

ubuntu下gerrit+jenkins+gitee部署流程完整记录

解决办法:当时被这个问题困扰了很久,也搜了很多解决办法,但是都没有解决。若出现该界面,卿检查以上gerrit的配置,一定是配置不对。

 

4.jenkins安装与配置

参考文档:https://blog.csdn.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。

ubuntu下gerrit+jenkins+gitee部署流程完整记录

解决办法:

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。

 ubuntu下gerrit+jenkins+gitee部署流程完整记录

ubuntu下gerrit+jenkins+gitee部署流程完整记录

Add New Server : Check4Gerrit

勾选 Gerrit Server With Default Configurations。

ubuntu下gerrit+jenkins+gitee部署流程完整记录

具体设置如下:

ubuntu下gerrit+jenkins+gitee部署流程完整记录

设置好之后,点击“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保存更改。

ubuntu下gerrit+jenkins+gitee部署流程完整记录

 

②安装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任务。

具体配置如下。

ubuntu下gerrit+jenkins+gitee部署流程完整记录

ubuntu下gerrit+jenkins+gitee部署流程完整记录

ubuntu下gerrit+jenkins+gitee部署流程完整记录

 

遇到的问题:

①设置Gerrit Trigger时出现以下问题(不一定是图中错误,但都是会报错):

ubuntu下gerrit+jenkins+gitee部署流程完整记录

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’组,如图所示。

ubuntu下gerrit+jenkins+gitee部署流程完整记录

 

②jenkins不能通过gerrit触发自动构建

参考文档:https://blog.csdn.net/cuiaamay/article/details/49002883

 

③git review时遇到以下问题

ubuntu下gerrit+jenkins+gitee部署流程完整记录

解决办法:

在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时出现以下现象:

ubuntu下gerrit+jenkins+gitee部署流程完整记录

解决办法:重装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之后又出现一下问题

ubuntu下gerrit+jenkins+gitee部署流程完整记录

解决办法:

git remote addgerrit ssh://[email protected]:39418/test-project2.git

然后出现以下错误:

ubuntu下gerrit+jenkins+gitee部署流程完整记录

修改home/huchenkang/.ssh/config,加入

Host 192.168.1.109

    KexAlgorithms +diffie-hellman-group1-sha1

然后又出现了以下错误。

ubuntu下gerrit+jenkins+gitee部署流程完整记录

该问题暂时没解决。

 

⑦code无法从gerrit同步到码云

解决办法:

a.查看是否安装replication插件

ubuntu下gerrit+jenkins+gitee部署流程完整记录

b.若没安装,则安装,安装前先停掉gerrit。注意,安装插件时,当前目录要有gerrit安装包

java -jargerrit-2.12.4.war init -d review_site --batch --install-plugin replication

ubuntu下gerrit+jenkins+gitee部署流程完整记录

再安装几个插件。

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。

ubuntu下gerrit+jenkins+gitee部署流程完整记录

重新生成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)