开发本地从gerrit下载代码进行开发后将代码git push review到Gerrit系统上, Jenkins 在监听 Gerrit 上的项目事件会触发构建任务来测试代码,Jenkins把测试结果通过 ssh gerrit 给这个项目打上 Verified (信息校验)成功或失败标记,成功邮件通知审核人员 Review(代码审核),审核人通过查看提交的文件进行人工检查代码,判断合格后合并提交,本次提交merge后会自动同步到gitlab备份。
一,gitlab
主要用途:代码备份、在线浏览。在本集成系统中gitlab不提供修改和人为提交功能。
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。安装方法是参考GitLab在GitHub上的Wiki页面。
界面如图下:
Gerrit,一种免费、开放源代码的代码审查软件,使用网页界面。利用网页浏览器,同一个团队的软件程序员,可以相互审阅彼此修改后的程序代码,决定是否能够提交,退回或者继续修改。
主要用途:代码审核
开发需要做的是:
(1)向管理员申请账号,拿着账号根据《gerrit注册用户及使用指导》(这里不提下载请度娘一下)对接gerrit系统,连接成功并修改用户名后通知管理员(由管理员注册邮箱并使用邮箱添加权限)
(2)下载代码-本地开发-代码提交审核
常用命令:
git clone gerrit仓库地址 分支名(无分支名则默认master)
./gerrit_env_branch 自己的名字 评审人的名字 git仓名 分支名
gerrit_env_branch脚本如下:
#!/bin/bash
BRANCH=master
if [ ! -n "$1" ];
then
echo "[error]: please input your name"
exit;
elif [ ! -n "$2" ];
then
echo "[error]: please input reveiwer name"
exit;
elif [ ! -n "$3" ];
then
echo "[error]: please input your project name"
exit;
elif [ -n "$4" ];
then
echo "[Notice] Use branch $4"
BRANCH=$4
fi
echo welcome $1,now begin config......
#config git user name and email
git config --global user.name "$1"
git config --global user.email [email protected]
#download commit-msg for change-Id
echo "Download the commit-msg file from gerrit server..."
scp -P 29418 -p [email protected]:hooks/commit-msg .git/hooks/
chmod 777 .git/hooks/commit-msg
echo "Dowmload completed."
#check the git config file
if grep -q review .git/config;
then
echo "recovery git config file......"
cp .git/.config-bak .git/config
else
cp .git/config .git/.config-bak
fi
#modify the git config file,add reviewer
echo "[remote \"review\"]
url = ssh://[email protected]:29418/$3
push = HEAD:refs/for/$BRANCH%[email protected],[email protected]" >> .git/config
echo Config Success Done!
git add 修改的文件名
git commit
git push review
(3)登录gerrit页面跟踪审核状态,如果是jenkins门禁失败,分析失败原因(可能是漏提交文件、依赖还未合并、分支切换未通知管理员同步切换等),如果不是代码本身问题告知管理员解决。
附:审核失败不可再通过Abandon Change按钮撤销,需要git rebase -i + git commit —amend + 重新提交审核,具体操作留给邱工作说明~
下图为某次提交的审核状态
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)的基于web界面的平台。允许持续集成和持续交付项目,无论用的是什么平台,可以处理任何类型的构建或持续集成。
1,下载:https://jenkins.io/zh/
2,主要用途:分布式运行多任务、持续的软件版本发布/测试项目、监控外部调用执行的工作。
=================================================================
需要开发做的工作:
代码提交地址变更:gitlab —->>> gerrit
前期代码提交地址是gitlab(因为项目前期,管理员这边还未参与,gitlab上的仓库都是由应用/系统负责人创建,开发往gitlab提交代码),当管理员介入时,需要负责人提供该项目的仓库地址并给管理员开通master权限,管理员迁移仓库到gerrit后会将gitlab仓库其他成员的权限修改为Reporter(只允许下载)
特别注意:
一旦仓库切到gerrit之后,开发须使用gerrit下载代码提交并走审核,不可再直接往gitlab提交,如需要创建分支也找管理员创建。
门禁配置
jenkins的门禁工程由管理员创建,门禁工程所做的事是:
第一、编译
第二、静态代码检查
后面会加git commit规范检查和上机做monkey测试。
需要应用开发做的是:
(1)提供管理员依赖仓的地址+分支名
(2)在app/build.gradle增加findbugs任务
task findbugs(type: FindBugs) {//
ignoreFailures = true
effort = "default"
reportLevel = "medium"
//过滤器
excludeFilter = new File("${project.rootDir}/findbug_filter.xml")
//这里填写项目classes目录
classes = files("ivi-radio/build/intermediates/classes")
source = fileTree('src/main/java')
classpath = files()
reports {
//只能开启一个
xml.enabled = true
html.enabled = false
}
3. jenkins版本工程配置
工程配置由管理员完成,需要系统开发做的是:
(1)提供代码目录架构,并指明仓库地址
(2)提供编译命令
jenkins日常使用:
1.构建版本
构建触发方式: (构建结果可配置邮件通知)
第一种:手动触发,由管理员或者开发自己构建(需要自行注册jenkins账号,然后由管理员添加build权限)
第二种:定时触发,根据项目需要通知管理员配置构建时间
2.升级包下载
3.修改记录查看
4.构建log查看