码迷,mamicode.com
首页 > 其他好文 > 详细

欢迎使用CSDN-markdown编辑器

时间:2016-06-12 02:26:50      阅读:555      评论:0      收藏:0      [点我收藏+]

标签:

  1. 基础环境规划
    Gitlab:
    IP:10.20.13.133
    功能:gitlab代码托管所有代码,并使用rsync实现远端自动备份代码,保证可靠性。
    Gerrit:
    IP:10.20.12.234
    功能:Code Review,并使用git review强制review所有代码,不允许直接提交。
    Jenkins:
    IP: 10.20.13.123
    功能:实现代码测试。

流程图
技术分享

2.安装gitlab
Install and configure the necessary dependencies:
sudo yum install curl policycoreutils openssh-server openssh-clients
sudo systemctl enable sshd
sudo systemctl start sshd
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
sudo firewall-cmd –permanent –add-service=http
sudo systemctl reload firewalld

Add the GitLab package server and install the package:
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo yum install gitlab-ce
OR
curl -LJO https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-XXX.rpm/download
rpm -i gitlab-ce-XXX.rpm

国内可以使用清华源
https://mirror.tuna.tsinghua.edu.cn/help/gitlab-ce/
CentOS/RHEL
vim /etc/yum.repos.d/gitlab-ce.repo
[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key

sudo yum makecache
sudo yum install gitlab-ce
Configure and start GitLab
sudo gitlab-ctl reconfigure
Browse to the hostname and login

登陆地址:http://ip/users/sign_in
官方文档:http://doc.gitlab.com/omnibus/

3.gitlab本地备份+rsync远程备份代码库
本地备份
修改备份设置:
vim /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
备份命令
/usr/bin/gitlab-rake gitlab:backup:create RAILS_ENV=production

建立两个crontab :1.每天把老的备份移出去2.对新的备份改权限
15 0 * * * mv /var/opt/gitlab/backups/* /var/opt/gitlab/old_bak
30 1 * * * chmod 777 /var/opt/gitlab/backups/*

默认备份目录:
/var/opt/gitlab/backups
crontab -e #编辑crontab服务文件
0 2 * * * /usr/bin/gitlab-rake gitlab:backup:create RAILS_ENV=production #每天两点自动备份一次
查询已有的定时任务:crontab –l

安装rsync实现自动备份到远端
安装Rsync
将服务器:10.20.13.133 的文件每天增量的备份到备份机:10.20.13.132
两台机器均需要安装rsync:
yum install rsync

服务器配置:
vim /etc/rsyncd.conf #创建主配置文件
port = 873
pid file = /var/run/rsyncd.pid
motd file=/var/rsync/welcome.msg
lock file = /var/rsync/rsync.lock
log file = /var/rsync/rsyncd.log
timeout = 900
dont compress = .gz .tgz .zip .z .Z .rpm .deb .bz2 #配置某些格式不压缩
[backup]
path = /var/opt/gitlab/backups
comment = gitlab backup path
use chroot = no
max connections = 5
list = yes
uid = nobody
gid = nobody
secrets file = /etc/rsyncd.secrets
hosts allow = 10.20.13.132
hosts deny = *
ignore errors = yes
transfer logging = yes
log format = “%t %a %m %f %b”
auth users = root

vim /etc/rsyncd.secrets
root:Paic1234
chmod 600 /etc/rsyncd.secrets
rsync –daemon #启动服务
kill cat /var/rsync/rsyncd.pid #停止服务

客户端配置:
vim /etc/rsyncd.secrets
Paic1234 #只保留密码,带上用户名会报错
vim /etc/rc.d/init.d/rsync.sh

!/bin/sh

rsync -vzrtopg –progress –delete -e ssh root@10.20.13.133::backup /var/opt/gitlab/backups –password-file=/etc/rsyncd.secrets
0 3 * * * /etc/rc.d/init.d/rsync.sh
4.安装gerrit
重新安装gerrit需要注意的:
1. 如果有项目在使用,需要备份/home/gerrit/review_site/git目录
2. 删除/home/gerrit 下的所有文件
3. 进入mysql,删除并重建gerrit数据库:
drop database gerritdb;
create database gerritdb;
GRANT ALL PRIVILEGES ON gerritdb.* TO ‘gerrit’@’localhost’ IDENTIFIED BY ‘gerrit’;
GRANT ALL PRIVILEGES ON gerritdb.* TO ‘gerrit’@’%’ IDENTIFIED BY ‘gerrit’;

安装前的准备:
设置java环境变量

vim /etc/profile
export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.75-2.5.4.2.el7_0.x86_64
export JRE_HOME=JAVAHOME/jreexportCLASSPATH=JAVA_HOME/lib:JREHOME/lib:CLASSPATH
export PATH=JAVAHOME/bin:JRE_HOME/bin:$PATH

下载Gerrit安装包:
http://gerrit-releases.storage.googleapis.com
最新的gerrit包:gerrit-2.12.2.war。

安装依赖
Gerrit的包是java格式,需要安装jre
安装mysql数据库,并创建数据库:
create database gerritdb;
GRANT ALL PRIVILEGES ON gerritdb.* TO ‘gerrit’@’localhost’ IDENTIFIED BY ‘gerrit’;
GRANT ALL PRIVILEGES ON gerritdb.* TO ‘gerrit’@’%’ IDENTIFIED BY ‘gerrit’;

Install:
把gerrit安装到/home/gerrit下
java -jar gerrit-2.12.2.war init -d /home/gerrit/review_site
技术分享
注意:可能会遇到如下错误,需要在安装开始后把如下两个jar包复制到lib目录下
技术分享
cp /tmp/gerrit_configuration/bcprov-jdk15on-1.52.jar /home/gerrit/review_site/lib/
cp /tmp/gerrit_configuration/mysql-connector-java-5.1.21.jar /home/gerrit/review_site/lib/
技术分享
技术分享
5.安装jenkins
6.gitlab+gerrit+Jenkins 整合
Gerrit配置:
配置:
sudo cp /home/gerrit/review_site/bin/gerrit.sh /etc/init.d/gerrit
sudo ln -snf /etc/init.d/gerrit /etc/rc2.d/S90gerrit
sudo ln -snf /etc/init.d/gerrit /etc/rc3.d/S90gerrit
reboot
sudo vim /etc/init.d/gerrit
GERRIT_SITE=/home/gerrit/review_site
/etc/init.d/gerrit restart
注意为了防止权限问题,改一次目录的权限:chown -R gerrit:gerrit gerrit/
生成密钥:
ssh-keygen -t rsa -C “gerrit@pingan.com.cn”
分别上传到gerrit和gitlab的gerrit用户中
vim /home/gerrit/.ssh/config
Host 10.20.13.133
User gerrit
IdentityFile /home/gerrit/.ssh/id_rsa
StrictHostKeyChecking no
UserKnownHostsFile /home/gerrit/.ssh/known_hosts
技术分享
创建TEST项目:
a.在gerrit上创建一个空的TEST项目
cd /home/gerrit/review_site/git
ssh -p 29418 gerrit@10.20.12.234 gerrit create-project TEST.git
b. 使用gitlab的gerrit身份从gitlab克隆TEST项目:
rm –rf TEST.git
技术分享
配置gerrit自动同步到gitlab:
当用户git review 后,代码只是 merge 到了 Gerrit 的TEST项目中,并没有 merge 到 Gitlab中,所以需要当 Gerrit test项目仓库有变化时自动同步到 Gitlab 的 test项目仓库中。
vim /home/gerrit/review_site/etc/replication.config
[remote “TEST”]

Gerrit TEST

projects = TEST
url = git@10.20.13.133:root/TEST.git
push = +refs/heads/:refs/heads/
push = +refs/tags/:refs/tags/
push = +refs/changes/:refs/changes/
threads = 3
技术分享
配置jenkins相关支持:
gerrit中创建jenkins用户
技术分享
Jenkins 密钥路径: /var/lib/jenkins/.ssh/id_rsa.pub
Gerrit 的 ‘Stream Events’配置
管理员登录gerrit
Projects->List->All-Projects
Projects->Access
Global Capabilities->Stream Events 点击 Non-Interactive Users
添加 Jenkins@pingan.com.cn 用户到 ‘Non-Interactive Users’ 组
技术分享
Jenkins Verified功能支持功能支持
Verified功能,就是利用jenkins确定gerrit提交的代码是否有问题,需要jenkins给个确认
a) 如果安装Gerrit时没有或者没有选择添加Verified标签功能[‘lable Verified’],需要自己添加
gerrit@gerrit:~cdtmp/gerrit@gerrit: /tmpgit config –global user.name “gerrit”
gerrit@gerrit:~/ tmpgitconfigglobaluser.emailgerrit@pingan.com.cngerrit@gerrit: /tmpgit remote add origin ssh://gerrit@10.20.12.234:29418/All-Projects
gerrit@gerrit:~/ tmpgitpulloriginrefs/meta/configgerrit@gerrit: /tmp vim project.config

在文件末添加
[label “Verified”]
function = MaxWithBlock
value = -1 Fails
value = 0 No score
value = +1 Verified

gerrit@gerrit:~/ tmpgitcommit?a?mUpdatepermissionsgerrit@gerrit: /tmp git push origin HEAD:refs/meta/config
gerrit@gerrit:~$ rm -rf tmp/

b) Verified 功能设置
现在提交的 Review 请求只有 Code Rivew 审核,我们要求的是需要 Jenkins 的 Verified 和 Code Review 双重保障,在 Projects 的 Access 栏里,针对 Reference: refs/heads/ 项添加 Verified 功能:
Projects -> List -> All-Projects
Projects -> Access -> Edit -> 找到 Reference: refs/heads/* 项
-> Add Permission -> Label Verified -> Group Name 里输入 Non-Interactive Users -> 回车或者 点击Add按钮 -> 在最下面点击 Save Changes 保存更改
技术分享
注意:如果想 Gitlab 上创建的项目使用 Gerrit 的 Code Review 功能,两个系统的用户必须统一,也就是说不管哪个用户使用 Gerrit,前提是这个用户在 Gitlab 和 Gerrit 上都已注册,邮箱一致、sshkey 一致。
Jenkins配置:
在Jenkins上创建Jenkins用户
技术分享
Gerrit Triggle插件配置
a) 安装gerrit triggle插件
Gerrit Triggle 配置文档https://wiki.jenkins-ci.org/display/JENKINS/Gerrit+Trigger
待补充
b) 设置Gerrit Trigger
主页面->Manage Jenkins->Gerrit Trigger->Add New Server
Add New Server : Check4Gerrit
勾选 Gerrit Server With Default Configurations
技术分享
c) 填写gerrit的jenkins账户信息,并测试
如果点击Test Connection后出现如图所示的错误User jenkins has no capability to connect to Gerrit event stream.,这是因为因Jenkins 没有权限监听 ,参考Gerrit 的 ‘Stream Events’配置
e) 重启Gerrit Triggle
技术分享
Verified项目配置
只要gerrit有提交代码,jenkins都能检测到,并verified代码正确性,然后把结果告诉gerrit
a) Jenkins上创建TEST项目
用 jenkins 登录http://10.24.6.12:8080/
技术分享
b) Git页面设置
技术分享
c) Build页面设置
技术分享
技术分享
此处测试代码可依据项目情况而定,可为空
git review配置
安装git-review和readline
yum install git-review
yum install readline
git review 命令需要 .gitreview 文件存在于项目目录里 
git clone git@10.20.13.133:root/TEST.git 
添加gitreview文件 
vim .gitreview
[gerrit]
host=10.20.12.234
port=29418
project=TEST.git
添加到版本库
git add .gitreview
git commit .gitreview -m ‘Admin add .gitreview file.’
git push origin master 
git config配置:  
git config –global user.name your_name_here
git config –global user.email your_email_here
git config –global push.default current
git config –global commit.template /tmp/log.template
定义自己的commit模板
6.CI的使用
git add .
git commit
git review
如果被打回,请使用git commit –amend
效果如图:每一次review会在gerrit上进行,review之前会先触发一次jenkins用例,review通过后会同步代码到gitlab上
技术分享
技术分享
技术分享

欢迎使用CSDN-markdown编辑器

标签:

原文地址:http://blog.csdn.net/whs2010110/article/details/51621966

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!