Git+Gerrit+Jenkins 持续集成系统安装与升级

https://blog.csdn.net/sinat_22767969/article/details/78920710


Git版本机环境迁移与升级说明

技术组

文档修订记录

日期
修订内容
修订人
版本
备注
2017-12-20
首次编写
陈超允
V1.0
初始化
         
         
         


  1. 准备工作

    1. 备份gerrit目录与数据库

#登陆203

#备份gerrit目录,代码库在GERRIT_HOME/Review/git

[python]  view plain  copy
  1. [root@sttx home]# cd /home/  
  2. [root@sttx home]# tar -zcvf gerrit.tar.gz gerrit/  
  3. [root@sttx dev0]# mkdir -p /home/dev0/  
  4. [root@sttx dev0]# mv gerrit.tar.gz /home/dev0/  


# 备份数据库

[python]  view plain  copy
  1. [root@sttx dev0]# mysqldump –ugerrituser -p gerritdb>/home/dev0/reviewdb.sql  
  2. [root@sttx dev0]# ls  
  3. gerrit.tar.gz  reviewdb.sql  


扫描二维码关注公众号,回复: 4824737 查看本文章
    1. 备份Jenkins

#确定JENKINS_HOME=/home/.jenkins

#由于以往jenkins开发构建时,保留所有构建记录,不能立即打包

#两种做法,一是删除以往构建,二是打包时跳过历史构建目录,这里选择删除以往构建

[python]  view plain  copy
  1. [root@sttx jobs]# cd /home/.jenkins/jobs/  
  2. [root@sttx jobs]# rm -rf ./*/builds/* ./*/workspace/* ./*/workspace/.git*  


#修改jenkins项目构建配置为

# 修改完成后对 JENKINS_HOME 打包
[python]  view plain  copy
  1. [root@sttx home]# tar -zcvf jenkins-home.tar.gz .jenkins/  
  2. [root@sttx home]# mv jenkins-home.tar.gz dev0/  
  3. [root@sttx home]# cd dev0/  
  4. [root@sttx dev0]# ls  
  5. gerrit.tar.gz  jenkins-home.tar.gz  reviewdb.sql  


# 传送到云服务器
[python]  view plain  copy
  1. [root@sttx dev0]# scp * ccy001:/u01/soft/  


    1. 备份私服库

#登陆192.168.1.111

[python]  view plain  copy
  1. [root@ddp01 mvn]# pwd  
  2. /u01/mw/mvn  
  3. [root@ddp01 mvn]# ls  
  4. nexus  nexus-2.11.2-03  sonatype-work  
  5. [root@ddp01 mvn]# tar -zcvf nexus-2.11.2-03.tar.gz nexus-2.11.2-03/  
  6. [root@ddp01 mvn]# tar -zcvf sonatype-work.tar.gz sonatype-work/  


#传送

[python]  view plain  copy
  1. [root@ddp01 mvn]# scp nexus-2.11.2-03.tar.gz sonatype-work.tar.gz ccy001:/u01/soft  


  1. 安装步骤

    1. JDK

[python]  view plain  copy
  1. [root@dev0 soft]# mkdir -p /u01/jdk/  
  2. [root@dev0 soft]# cp /u01/soft/jdk1.8.0_131.tar.gz /u01/jdk/  
  3. [root@dev0 soft]# cd /u01/jdk/  
  4. [root@dev0 jdk]# ls  
  5. jdk1.8.0_131.tar.gz  
  6. [root@dev0 jdk]# tar -zxvf jdk1.8.0_131.tar.gz  
  7. [root@dev0 jdk]# rm -rf jdk1.8.0_131.tar.gz  


#配置环境变量,添加如下内容

[python]  view plain  copy
  1. [root@dev0 u01]# vim /etc/profile  
  2. export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8  
  3. export JAVA_HOME=/u01/jdk/jdk1.8.0_131  
  4. export JAVA_BIN=$JAVA_HOME/bin  
  5. export PATH=$PATH:$JAVA_HOME/bin  
  6. export MAVEN_HOME=/u01/mvn/apache-maven-3.3.9  
  7. export GIT_HOME=/usr/local/git/bin  
  8. export GIT_CORE=/usr/local/git/libexec/git-core  
  9. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar  
  10. export JAVA_HOME JAVA_BIN PATH CLASSPATH  
  11. export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:$JAVA_HOME/bin:/root/bin  
  12. export PATH=$PATH:$GIT_HOME:$MAVEN_HOME/bin:$GIT_CORE  
  13. [root@dev0 u01]# source /etc/profile  
  14. [root@dev0 u01]# java -version  
  15. Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8  
  16. java version "1.8.0_131"  


#创建软链接

[python]  view plain  copy
  1. [root@dev0 u01]# ln -s /u01/jdk/jdk1.8.0_131/bin/java /usr/bin/java  


    1. Maven安装

[python]  view plain  copy
  1. [root@dev0 u01]# mkdir -p /u01/mvn  
  2. [root@dev0 u01]# cp /u01/soft/apache-maven-3.3.9.tar.gz /u01/mvn/  
  3. [root@dev0 u01]# cd /u01/mvn/  
  4. [root@dev0 mvn]# ls  
  5. apache-maven-3.3.9.tar.gz  
  6. [root@dev0 mvn]# tar -zxvf apache-maven-3.3.9.tar.gz  


#修改setting为云环境上私服地址,替换192.168.1.111dev0

[python]  view plain  copy
  1. [root@dev0 conf]# cd /u01/mvn/apache-maven-3.3.9/conf/  
  2. [root@dev0 conf]# vim settings.xml  


#vim执行替换

[python]  view plain  copy
  1. :g/192.168.1.111/s//dev0/g  


[python]  view plain  copy
  1. [root@dev0 conf]# mvn -v  
  2. Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8  
  3. Apache Maven 3.3.9…  


#创建软链接

[python]  view plain  copy
  1. [root@dev0 u01]# ln -s /u01/mvn/apache-maven-3.3.9/bin/mvn /usr/bin/mvn  


    1. Git安装

[python]  view plain  copy
  1. [root@dev0 soft]# unzip v2.3.0.zip  
  2. [root@dev0 soft]# cd git-2.3.0/  


#安装git依赖包

[python]  view plain  copy
  1. [root@dev0 git-2.3.0]# yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker  
  2. [root@dev0 git-2.3.0]# make prefix=/usr/local/git all  
  3. [root@dev0 git-2.3.0]# make prefix=/usr/local/git install  
  4. [root@dev0 git-2.3.0]# git --version  


[python]  view plain  copy
  1. git version 2.3.0  


#创建软链接

[python]  view plain  copy
  1. [root@dev0 git-2.3.0]# ln -s /usr/local/git/bin/git /usr/bin/git  


 

    1. Nginx安装

[python]  view plain  copy
  1. [root@pelican mvn]# cd /u01/soft/  
  2. [root@pelican soft]# wgethttp://nginx.org/download/nginx-1.12.2.tar.gz  
  3. [root@pelican soft]# tar -zxvf nginx-1.12.2.tar.gz  
  4. [root@pelican soft]# cd nginx-1.12.2  


#安装依赖包

[python]  view plain  copy
  1. [root@pelican soft]#yum -y install openssl openssl-devel  
  2. [root@pelican soft]#yum -y install pcre* zlib*  
  3. [root@pelican soft]#yum install -y gcc gcc-c++  
  4. [root@pelican soft]#yum install GeoIP  
  5. [root@pelican soft]#./configure --with-stream  
  6. [root@pelican soft]#make && make install  
  7. [root@pelican soft]#./configure --with-http_stub_status_module --with-stream --with-http_geoip_module --with-http_ssl_module --with-http_realip_module  
  8. [root@pelican soft]#make && make install  


#安装完的目录/usr/local/nginx

#创建启停重启脚本

[python]  view plain  copy
  1. [root@pelican ~]# cd /usr/local/nginx/  
  2. [root@pelican nginx]# cat startNginx.sh  


[python]  view plain  copy
  1. cd /usr/local/nginx  
  2. /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf  
  3. [root@pelican nginx]# cat stopNginx.sh  
  4. pkill -9 nginx  
  5. [root@pelican nginx]# cat restartNginx.sh  
  6. cd /usr/local/nginx/sbin/  
  7. ./nginx -s reload  


      1. 设为系统服务自启

[python]  view plain  copy
  1. [root@pelican nginx]# cat /etc/init.d/nginx  
  2. #!/bin/sh  
  3. #  
  4. # Startup script for the nginx Continuous Integration server  
  5. # (via Jakarta Tomcat Java Servlets and JSP server)  
  6. #  
  7. # chkconfig: - 85 15  
  8. # description: Jakarta nginx Java Servlets and JSP server  
  9. # processname: nginx  
  10. # pidfile: /u01/app/nginx/.pid  
  11.   
  12. export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8  
  13. EXCUTE_USER=root  
  14. APP_NAME=nginx  
  15. LOCKFILE=/var/lock/$APP_NAME  
  16. APP_HOME=/usr/local/nginx  
  17.   
  18. case "$1" in  
  19.   start)  
  20.         echo -n "Starting $APP_NAME: "  
  21.         su -p -s /bin/sh $EXCUTE_USER -c "$APP_HOME/start*.sh"  
  22.         RETVAL=$?  
  23.         echo  
  24.         [ $RETVAL = 0 ] && touch $LOCKFILE  
  25.         ;;  
  26.   stop)  
  27.         echo -n "Shutting down $APP_NAME: "  
  28.         su -p -s /bin/sh $EXCUTE_USER -c "$APP_HOME/stop*.sh"  
  29.         RETVAL=$?  
  30.         echo  
  31.         [ $RETVAL = 0 ] && rm -f $LOCKFILE  
  32.         ;;  
  33.   restart)  
  34.         $0 stop  
  35.         $0 start  
  36.         ;;  
  37.   condrestart)  
  38.        [ -e $LOCKFILE ] && $0 restart  
  39.        ;;  
  40.   status)  
  41.         su -p -s /bin/sh $EXCUTE_USER -c "ps -ef |grep $APP_NAME"  
  42.         ;;  
  43.   *)  
  44.         echo "Usage: $0 {start|stop|restart|status}"  
  45.         exit 1  
  46. esac  
  47.   
  48. exit 0  


#设置服务

[python]  view plain  copy
  1. [root@pelican nginx]#chmod a+x /etc/init.d/nginx  
  2. [root@pelican nginx]#chkconfig nginx on  
  3. [root@pelican nginx]# chkconfig --list |grep nginx  
  4. nginx             0:关闭   1:关闭   2:启用   3:启用   4:启用   5:启用   6:关闭  
  5. [root@pelican nginx]#service nginx status  


#nginx配置后续再做

 

    1. GitWeb安装

[python]  view plain  copy
  1. [root@dev0 git-2.3.0]# yum -y install gitweb  
  2. [root@dev0 git-2.3.0]#yum -y  install perl-Time-HiRes  
  3. [root@dev0 git-2.3.0]#yum -y install perl-CPAN  
  4. [root@dev0 git-2.3.0]#yum -y install perl-CGI  


#配置gitweb 展示的那些代码库的根目录

[python]  view plain  copy
  1. [root@dev0 git-2.3.0]# vim /etc/gitweb.conf  
  2. $projectroot = "/u01/gerrit/Review/git"  


#创建软链接

[python]  view plain  copy
  1. [root@dev0 gerrit]# mkdir -p /usr/lib/cgi-bin/  
  2. [root@dev0 gerrit]# ln -s /usr/local/git/share/gitweb/gitweb.cgi /usr/lib/cgi-bin/gitweb.cgi  


    1. MySQL安装

[python]  view plain  copy
  1. [root@dev0 soft]# mkdir -p /u01/mysql  
  2. [root@dev0 soft]# cd /u01/mysql/  
  3. [root@dev0 mysql]# cp /u01/soft/mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz ./  
  4. [root@dev0 mysql]# tar -zxvf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz  
  5. [root@dev0 mysql]# rm -rf mysql-5.7.17-linux-glibc2.5-x86_64.tar.gz  
  6. [root@dev0 mysql]# cd mysql-5.7.17-linux-glibc2.5-x86_64/  
  7. [root@dev0 mysql-5.7.17-linux-glibc2.5-x86_64]# mkdir /u01/mysql/logs /u01/mysql/data  


#先将配置好的my.conf文件传至服务器


#直接用root用户装,修改user=root

[python]  view plain  copy
  1. [root@dev0 mysql]# vim /etc/my.cnf  


[python]  view plain  copy
  1. user=root  
  2. [root@dev0 mysql]# mysql-5.7.17-linux-glibc2.5-x86_64/bin/mysqld --initialize --user=root --basedir=/u01/mysql --datadir=/u01/mysql/data  --innodb_undo_tablespaces=3 --explicit_defaults_for_timestamp  
  3. #此处需要注意记录生成的临时密码,如:root@localhost:jh7n;CSoXbgh  
  4. [root@dev0 mysql]# mysql-5.7.17-linux-glibc2.5-x86_64/bin/mysql_ssl_rsa_setup --datadir=/u01/mysql/data/  


#查看默认密码

[python]  view plain  copy
  1. [root@dev0 mysql]#cat /u01/mysql/logs/mysql-error.log  
  2. [root@dev0 mysql-5.7.17-linux-glibc2.5-x86_64]# cp support-files/mysql.server /etc/init.d/mysql  
  3. [root@dev0 mysql-5.7.17-linux-glibc2.5-x86_64]# chkconfig --add mysql  
  4. [root@dev0 mysql-5.7.17-linux-glibc2.5-x86_64]# chkconfig mysql on  
  5. [root@dev0 mysql-5.7.17-linux-glibc2.5-x86_64]# chkconfig --list | grep mysql  
  6. mysql            0:off       1:off       2:on 3:on 4:on 5:on 6:off  



[python]  view plain  copy
  1. [root@dev0 mysql]# vim /etc/init.d/mysql  
  2. basedir=/u01/mysql/mysql-5.7.17-linux-glibc2.5-x86_64  
  3. datadir=/u01/mysql/data  


#配置环境变量

[python]  view plain  copy
  1. [root@dev0 mysql]# vim /etc/profile  
  2. export MYSQL_HOME=/u01/mysql/mysql-5.7.17-linux-glibc2.5-x86_64/bin  


#创建软链接

[python]  view plain  copy
  1. [root@dev0 mysql]# ln -s /u01/mysql/mysql-5.7.17-linux-glibc2.5-x86_64/bin/mysqld /usr/bin/mysqld  


#登陆mysql

[python]  view plain  copy
  1. [root@dev0 mysql]# mysql --user=root -p  
  2. mysql> SET PASSWORD=PASSWORD('password');  
  3. mysql> flush privileges;  
  4. Query OK, 0 rows affected (0.00 sec)  


#添加远程访问权限

[python]  view plain  copy
  1. mysql> use mysql;  
  2. Reading table information for completion of table and column names  
  3. You can turn off this feature to get a quicker startup with -A  
  4. Database changed  
  5. mysql> update user set host = '%' where user = 'root';  
  6. Query OK, 1 row affected (0.01 sec)  


#重启

[python]  view plain  copy
  1. [root@dev0 mysql]# service mysql restart  


      1. 导入gerrit数据库脚本

[python]  view plain  copy
  1. mysql>CREATE DATABASE IF NOT EXISTS reviewdb DEFAULT CHARSET utf8 COLLATE utf8_general_ci;  
  2. mysql> use reviewdb;  
  3. mysql> source /u01/soft/dev0/reviewdb.sql  


      1. Mysql反向代理配置

#配置mysql反向代理流

[python]  view plain  copy
  1. [root@pelican nginx]# pwd  
  2. /usr/local/nginx  
  3. [root@pelican nginx]# vim conf/nginx.conf  
  4. #gerrit-mysql  
  5. stream {  
  6.     server {  
  7.        listen 3300;  
  8.        proxy_pass dev0:3306;  
  9.        proxy_buffer_size 512k;  
  10.        allow all;  
  11.     }  
  12. }  
  13. #重启nginx  
  14. [root@pelican nginx]# sh restartNginx.sh  


#navicat远程连接测试是否能连上

    1. Gerrit安装

#解压从203备份的gerrit tar

[python]  view plain  copy
  1. [root@dev0 u01]# cp soft/dev0/gerrit.tar.gz ./  
  2. [root@dev0 u01]# tar -zxvf gerrit.tar.gz  


#修改配置

[python]  view plain  copy
  1. [root@dev0 logs]# cd /u01/gerrit/Review/  
  2. [root@dev0 Review]# cat etc/gerrit.config  


[python]  view plain  copy
  1. [gerrit]  
  2.        basePath = git  
  3.        canonicalWebUrl = http://39.108.0.229/gerrit  
  4. [database]  
  5.        type = mysql  
  6.        hostname = localhost  
  7.        database = reviewdb  
  8.        username = root  
  9. [index]  
  10.        type = LUCENE  
  11. [auth]  
  12.        type = HTTP  
  13. [sendemail]  
  14.         smtpServer = smtp.qq.com  
  15.         smtpServerPort = 465  
  16.         smtpEncryption = ssl  
  17.         smtpUser = 474849750@qq.com  
  18.         smtpPass = ybvnzfujouqocaaa  
  19.         sslVerify = false  
  20.         from=CodeReview<474849750@QQ.COM>  
  21. [gitweb]  
  22.         cgi = /usr/local/git/share/gitweb/gitweb.cgi  
  23. [container]  
  24.        user = root  
  25.        javaHome = /u01/jdk/jdk1.8.0_131/jre  
  26. [sshd]  
  27.        listenAddress = *:29418  
  28. [httpd]  
  29.        listenUrl = http://*:8080/gerrit  
  30. [cache]  
  31.        directory = cache  


#重启失败,重新更新下索引

[python]  view plain  copy
  1. [root@dev0 gerrit]# cd Review/bin/  
  2. [root@dev0 bin]# java -jar gerrit.war reindex -d /u01/gerrit/Review  



#安装gerrit为系统服务,开机自启

[python]  view plain  copy
  1. [root@dev0 gerrit]# vim /etc/init.d/gerrit  
  2. #!/bin/bash  
  3. #chkconfig:2345 20 90  
  4. #description:jenkins  
  5. #processname:jenkins  
  6. export JAVA_HOME=/u01/jdk/jdk1.8.0_131  
  7. case $1 in  
  8.         start) su root /u01/gerrit/start-gerrit.sh;;  
  9.         stop) su root  /u01/gerrit/stop-gerrit.sh;;    
  10.         restart) su root /u01/gerrit/restart-gerrit.sh;;  
  11.     status)su -p -s /bin/sh root -c "ps -ef |grep gerrit";;  
  12.         *) echo "require start|stop|restart|status" ;;  
  13. esac  
  14. [root@dev0 jenkins]# chmod a+x /etc/init.d/gerrit  
  15. [root@dev0 gerrit]# chkconfig gerrit on  
  16. [root@dev0 gerrit]# chkconfig --list |grep gerrit  
  17. gerrit             0:off       1:off       2:on 3:on 4:on 5:on 6:off  


      1. 配置gerrit nginx反向代理

#上传http认证文件

[python]  view plain  copy
  1. [root@pelican gerrit]# pwd  
  2. /usr/local/nginx/gerrit  
  3. [root@pelican gerrit]# cp /u01/soft/dev0/gerrit2.passwd ./  


#配置gerrit  server

[python]  view plain  copy
  1. [root@pelican nginx]# vim conf/nginx.conf  
  2. location /gerrit{  
  3.                 #root /home/gerrit/Review;  
  4.                 proxy_pass http://dev0:8080;  
  5.                 proxy_set_header   Host             $host;  
  6.                 proxy_set_header   X-Real-IP        $remote_addr;  
  7.                 proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;  
  8.                 auth_basic "Gerrit Code Review";  
  9.                 auth_basic_user_file /usr/local/nginx/gerrit/gerrit2.passwd;  
  10.         }  
  11. #另外还需配置gerrit端口29418的代理  
  12. #stream tcp  
  13. stream {  
  14.     #gerrit-mysql  
  15.     server {  
  16.        listen 3300;  
  17.        proxy_pass dev0:3306;  
  18.        proxy_buffer_size 512k;  
  19.        allow all;  
  20.     }  
  21.     #gerrit-ssh  
  22.     server{  
  23.         listen 29418;  
  24.         proxy_buffer_size 512k;  
  25.         proxy_pass dev0:29418;  
  26.         allow all;  
  27.     }  
  28. }  


#最后配置腾讯云增加入站规则TCP:29418

      1. 配置gitweb权限

在单独项目的ACL里为项目的用户组增加了对refs/meta/configread权限

    1. Jenkins安装

#解压jenkins tar

#修改启停脚本,改变jenkins家目录

[python]  view plain  copy
  1. [root@dev0 jenkins]# cat start-jenkins.sh  
  2. #!/bin/bash  
  3. export JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8  
  4. export JENKINS_HOME=/u01/jenkins/.jenkins  
  5. cd /u01/jenkins  
  6. nohup /u01/jdk/jdk1.8.0_131/bin/java -Dfile.encoding=utf-8 -Dhudson.util.ProcessTree.disable=true -jar jenkins.war --httpPort=8081 >> system_out.log 2>&1 &  
  7. echo $!> /u01/jenkins/.pid  
  8. echo "===jenkins started!"  


#解压jenkins配置tar

[python]  view plain  copy
  1. [root@dev0 jenkins]# tar -zxvf jenkins-home.tar.gz  



#跟上述做法相同,将jenkins作为系统服务

[python]  view plain  copy
  1. [root@dev0 jenkins]# vim /etc/init.d/Jenkins  
  2. #!/bin/sh  
  3. #  
  4. # Startup script for the nginx Continuous Integration server  
  5. #  
  6. # chkconfig: - 85 15  
  7. # description: Jakarta nginx Java Servlets and JSP server  
  8. # processname: tomcat  
  9. # pidfile: /var/run/nginx.pid  
  10. JENKINS_USER=root  
  11. LOCKFILE=/var/lock/jenkins  
  12. APP_NAME=jenkins  
  13. JENKINS_HOME=/u01/jenkins  
  14. case "$1" in  
  15.   start)  
  16.         echo -n "Starting $APP_NAME: "  
  17.         su -p -s /bin/sh $JENKINS_USER -c "$JENKINS_HOME/start-jenkins.sh"  
  18.         RETVAL=$?  
  19.         echo  
  20.         [ $RETVAL = 0 ] && touch $LOCKFILE  
  21.         ;;  
  22.   stop)  
  23.         echo -n "Shutting down $APP_NAME: "  
  24.         su -p -s /bin/sh $JENKINS_USER -c "$JENKINS_HOME/stop-jenkins.sh"  
  25.         RETVAL=$?  
  26.         echo  
  27.         [ $RETVAL = 0 ] && rm -f $LOCKFILE  
  28.         ;;  
  29.   restart)  
  30.         $0 stop  
  31.         $0 start  
  32.         ;;  
  33.   condrestart)  
  34.        [ -e $LOCKFILE ] && $0 restart  
  35.        ;;  
  36.   status)  
  37.         su -p -s /bin/sh $JENKINS_USER -c "ps -ef |grep $APP_NAME"  
  38.         ;;  
  39.   *)  
  40.         echo "Usage: $0 {start|stop|restart|status}"  
  41.         exit 1  
  42. esac  
  43. exit 0  
  44. [root@dev0 jenkins]# chmod a+x /etc/init.d/jenkins  
  45. [root@dev0 jenkins]# chkconfig jenkins on  
  46. [root@dev0 gerrit]# chkconfig --list |grep Jenkins  


# 创建公钥
[python]  view plain  copy
  1. [root@dev0 gerrit]# ssh-keygen  


# 启动 jenkins
      1. Jenkins nginx反向代理配置

[python]  view plain  copy
  1. [root@pelican nginx]# cat conf/nginx.conf  
  2. #端口8081  
  3.        server {  
  4.         listen       80;  
  5.         server_name  localhost;  
  6.         location /{  
  7.            client_max_body_size 30m;  
  8.            client_body_buffer_size 128k;  
  9.            proxy_buffer_size 26400k;  
  10.            proxy_buffers   32 25000k;  
  11.            proxy_busy_buffers_size 33280k;  
  12.            proxy_redirect off;  
  13.            proxy_set_header Host $host;  
  14.            proxy_set_header X-Real-IP $remote_addr;  
  15.            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
  16.            proxy_pass http://dev0:8081;  
  17.            access_log logs/jenkins_access.log;  
  18.         }  
  19.        location /gerrit-trigger{  
  20.            client_max_body_size 30m;  
  21.            client_body_buffer_size 128k;  
  22.            proxy_buffer_size 26400k;  
  23.            proxy_buffers   32 25000k;  
  24.            proxy_busy_buffers_size 33280k;  
  25.            proxy_redirect off;  
  26.            proxy_set_header Host $host;  
  27.            proxy_set_header X-Real-IP $remote_addr;  
  28.            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;  
  29.            proxy_pass http://dev0:8081/gerrit-trigger;  
  30.            access_log logs/jenkins_access.log;  
  31.         }  
  32.        }  



#登陆jenkins更改jenkins地址

Jenkins URL : http://123.206.68.97:8081

# 端口 8081 后续经测试,不能正常跳转。改为 80 ok
      1. Jenkins配置修改

  1. 系统设置àgerrit triggeràgerritServeràGerrit Connection Setting

因为gerritjenkins装在同一台机子上,HostName127.0.0.1 Frontend URLhttp://127.0.0.1:8080/

  1. 配置公网ippelican)从节点,用于发布上线包脚本

  1. pelican配置dev0免密登陆认证

  2. 节点配置


  1. job 上绑定 slave-pelican
      1. jenkins job源码管理修改

1)改为本地10.0.0.16,修改所有构建项目地址

Repository URLssh://[email protected]:29418/Weidi_ccbc

2)用jekins用户登陆gerrit,添加jenkins所在机器(dev0)的ssh-key

  1. Gerrit升级说明

203机子gerrit-2.8.1最高升级至gerrit-2.11.10,再高的版本则导致eclipse gerrit插件不能使用,gerrit-web也不能使用gitweb

    1. Gerrit升级步骤

  1. 上传gerrit-2.9.wargerrit-2.10.wargerrit-2.11.10.wardev0

[root@dev0 dev0]# scp gerrit-2.10.war gerrit-2.9.war gerrit-2.11.10.war dev0:/u01/soft/

  1. 依次安装2.9-->2.10-->2.11

[python]  view plain  copy
  1. [root@dev0 soft]#  java -jar gerrit-2.9.war  init -d /u01/gerrit/Review/  
  2. [root@dev0 soft]#  java -jar gerrit-2.10.war init -d /u01/gerrit/Review/  
  3. [root@dev0 soft]#  java -jar gerrit-2.11.10.war init -d /u01/gerrit/Review/  


#安装提示

[python]  view plain  copy
  1. #Location of Git repositories   [git]: /home/review_site/git/  
  2. #Database server type           [h2]: mysql  
  3. #Database name                  [reviewdb]: gerritdb  
  4. #Database username              [root]: gerritusr  
  5. #Authentication method          [OPENID/?]: http  
  6. #Behind reverse proxy           [Y/n]? y  
  7. #Canonical URL                  [http://ccy001/]:http://39.108.0.229/gerrit/  


 

    1. 升级日志

  1. 增加commit size列,有红、黄、绿三种颜色

  2. 增加GitWeb操作界面

  3. 可在gerrit的一次commit上,在浏览器上增加或修改文件

  4. 进入代码review界面,去除换行符”\r”

  5. Review,可选择一段代码块,按下c,添加draft,选中代码块高亮

 

  1. Eclipse配置修改

      1. Maven 地址修改

WindowsàpreferresàMavenàUser settingà

点击 open file à 将原来的 192.168.1.111 换成39.108.0.229
保存完,点击 Update settings à Reindex à Apply
      1.  Gerrit配置修改

WindowàShow ViewàOtheràMylynàTeam repositoryà

# 原来 192.168.1.203 的可以右键 à disconnected
右键 à new repository à Task repository à Gerrit Code Review à
Finish 即可 .
# 删除原有项目
Import à Project from git à gerrit à tihu-gerrit à refresh
选择要导入项目。
# 此步选择 cancel
重新选择 import à Existing Maven Project à
找到刚刚 clone 下来的项目导入即可
  1. 安装问题记录

    1. Gerrit 提交信息乱码

#查看gerrit数据库编码

mysql> show variables like '%character%';

| character_set_server    | latin1 |

首先保证服务器的系统编码是支持中文的

[root@115 ~]# cat /etc/sysconfig/i18n

LANG="zh_CN.UTF-8"

#永久性修改mysql

[root@115 ~]# vim /etc/my.cnf

.......

[mysqld]

......

character_set_server = utf8           【添加这一行内容】

#重启

[root@115 ~]# service mysql restart

 

    1. Gerrit发送邮件异常

[python]  view plain  copy
  1. [root@ccy001 gerrit]# vim Review/etc/gerrit.config  
  2. [sendemail]  
  3.         smtpServer = smtp.qq.com  
  4.         smtpServerPort = 465  
  5.         smtpEncryption = ssl  
  6.         smtpUser = 474849750@qq.com  
  7.         smtpPass = ybvnzfujouqocaaa  
  8.         sslVerify = false  
  9.         from[email protected]  


 

    1. Gerritreview时,The page you requested was not found, or you do not have permission to view

原因:gerrit nginx配置代理时,去掉反斜杠/

    1. User jenkins has no capability to connect to Gerrit event stream

解决方案:

管理员登录gerritàProjectsàListàAll-ProjectsàProjectsàAccess

 àGlobal CapabilitiesàStream Events点击Non-Interactive Usersà

 à添加jenkins用户到Non-Interactive Users

 

    1. GitWeb "Can't locate Time/HiRes.pm in @INC"问题

[python]  view plain  copy
  1. yum -y  install perl-Time-HiRes  
  2. yum -y install perl-CPAN  
  3. yum -y install perl-CGI  


 

    1. Gerritgit unpack error问题

#解决的办法就是到reviewdb数据库里,先从patch_sets表中找出change_id对应commitid的记录,确定无误后

我们要做的是将其关闭,并把状态置为Abandon。(友情提醒,涉及重要业务,注意备份数据库)

mysql> update changes set open='N',status='A' where change_id=1974;

 

    1. jenkins build的时候拿的不是新提交的代码

源码管理à选择git,Refspecrefs/changes/*:refs/changes/*Branch Specifier (blank for 'any')$GERRIT_REFSPEC

    1. jenkins配置slave的时候命令找不到


#把要用的命令创建一个快捷方式到/usr/bin,如

[python]  view plain  copy
  1. ln -s /usr/local/git/bin/git /usr/bin/git  
  2. ln -s /u01/mvn/apache-maven-3.3.9/bin/mvn /usr/bin/mvn  
  3. ln -s /u01/jdk/jdk1.8.0_131/bin/java /usr/share/java  
  4. ln -s /u01/mvn/apache-maven-3.3.9/bin/mvn /usr/bin/mvn  
  5. ln -s /usr/local/git/bin/git /usr/bin/git  


 

    1. com.jcraft.jsch.JSchException: Auth failUser: jenkins KeyFile: /root/.ssh/id_rsa

原因是新安装的gerrit jenkins用户没有配置主机的ssh key,登陆jenkins用户到gerrit,添加SSH Public key 就好了

    1. jenkins打包构建时,杀掉jenkins脚本里执行的进程,解决办法

解决办法:

  1. 启动Jenkins的时候加上-Dhudson.util.ProcessTree.disable=true,也就是java -Dhudson.util.ProcessTree.disable=true -jar jenkins.war

  2. 临时改变BUILD_ID,使得jenkins不会找到并结束掉run.sh启动的后台进程,

OLD_BUILD_ID=$BUILD_ID

echo $OLD_BUILD_ID

BUILD_ID=dontKillMe

./run.sh restart

#改回原来的BUILD_ID

BUILD_ID=$OLD_BUILD_ID

echo $BUILD_ID

 

    1. git克隆项目出现no matching key exchange method found. Their offer: diffie-hellman-group1-sha1

解决办法:在window上用git bash执行

vim ~/.ssh/config

# 插入
Host *
    KexAlgorithms +diffie-hellman-group1-sha1
珠海数通天下科技有限公司

猜你喜欢

转载自blog.csdn.net/darling757267/article/details/80711380
今日推荐