标签:
流程图
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
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=
export 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”]
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:~
gerrit@gerrit:~/ tmp
gerrit@gerrit:~/ tmp
在文件末添加
[label “Verified”]
function = MaxWithBlock
value = -1 Fails
value = 0 No score
value = +1 Verified
gerrit@gerrit:~/ tmp
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上
标签:
原文地址:http://blog.csdn.net/whs2010110/article/details/51621966