持续集成(CI)系统
持续集成(CI)系统
gitlab、gerrit、jenkins三大系统整体框架
开发本地从gerrit下载代码进行开发后将代码git push review到Gerrit系统上, Jenkins 在监听 Gerrit 上的项目事件会触发构建任务来测试代码,Jenkins把测试结果通过 ssh gerrit 给这个项目打上 Verified (信息校验)成功或失败标记,成功邮件通知审核人员 Review(代码审核),审核人通过查看提交的文件进行人工检查代码,判断合格后合并提交,本次提交merge后会自动同步到gitlab备份。
一,gitlab
主要用途:代码备份、在线浏览。在本集成系统中gitlab不提供修改和人为提交功能。
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。安装方法是参考GitLab在GitHub上的Wiki页面。
界面如图下:
二、gerrit
Gerrit,一种免费、开放源代码的代码审查软件,使用网页界面。利用网页浏览器,同一个团队的软件程序员,可以相互审阅彼此修改后的程序代码,决定是否能够提交,退回或者继续修改。
主要用途:代码审核
开发需要做的是:
(1)向管理员申请账号,拿着账号根据《gerrit注册用户及使用指导》(这里不提下载请度娘一下)对接gerrit系统,连接成功并修改用户名后通知管理员(由管理员注册邮箱并使用邮箱添加权限)
(2)下载代码-本地开发-代码提交审核
常用命令:
git clone gerrit仓库地址 分支名(无分支名则默认master)
./gerrit_env_branch 自己的名字 评审人的名字 git仓名 分支名
gerrit_env_branch脚本如下:
#!/bin/bashBRANCH=masterif [ ! -n "$1" ];
thenecho "[error]: please input your name"exit;
elif [ ! -n "$2" ];
thenecho "[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
fiecho welcome $1,now begin config......#config git user name and email
git config --global user.name "$1"
git config --global user.email $1@yourmail.cn#download commit-msg for change-Id
echo "Download the commit-msg file from gerrit server..."
scp -P 29418 -p $1@192.168.10.53: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;
thenecho "recovery git config file......"cp .git/.config-bak .git/config
elsecp .git/config .git/.config-bakfi#modify the git config file,add reviewer
echo "[remote \"review\"]url = ssh://$1@192.168.10.53:29418/$3push = HEAD:refs/for/$BRANCH%r=$2@yourmail.cn,cc=yourmail@roadrover.cn" >> .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
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins是一个开源的、可扩展的持续集成、交付、部署(软件/代码的编译、打包、部署)的基于web界面的平台。允许持续集成和持续交付项目,无论用的是什么平台,可以处理任何类型的构建或持续集成。
1,下载:Jenkins
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 = trueeffort = "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 = truehtml.enabled = false}
3. jenkins版本工程配置
工程配置由管理员完成,需要系统开发做的是:
(1)提供代码目录架构,并指明仓库地址
(2)提供编译命令
jenkins日常使用:
1.构建版本
构建触发方式: (构建结果可配置邮件通知)
第一种:手动触发,由管理员或者开发自己构建(需要自行注册jenkins账号,然后由管理员添加build权限)
第二种:定时触发,根据项目需要通知管理员配置构建时间
2.升级包下载
3.修改记录查看
4.构建log查看
持续集成(CI)系统相关推荐
- 使用GitLab来实现IOS项目的持续集成CI
作为程序员,代码是一定要写的,而且要天天写.在好多地方见过这样一种说法: 只会写程序的程序员不是好程序员 当然,我不赞同这种观点,因为有的人他天生就是为程序而生的.但是掌握一些代码之外的理论知识也是一 ...
- centos7下Gitlab+Jenkins部署持续集成CI环境
1.基本环境 主机:win10,IP:192.168.0.111:部署机器centos7,IP:192.168.0.65: 内存推荐到8G,实测需要6G以上,以免出现内存不够用而报错. 2.安装git ...
- ci持续集成工程师前景_不要忽视持续集成(CI)/持续交付(CD)的13个优势
原标题:不要忽视持续集成(CI)/持续交付(CD)的13个优势 持续集成(CI)/持续交付(CD)是现代软件开发周期的基础,人们需要了解持续集成(CI)/持续交付(CD)和其管道实施的所有好处. 在传 ...
- 持续集成(CI)工具-----jenkins
1.jenkins 1.1. 什么是jenkins Jenkins是一个开源的.提供友好操作界面的持续集成(CI)工具,起源于Hudson(Hudson是商用的),主要用于持续.自动的构建/测试软件项 ...
- 持续集成 ci/cd_CI / CD即服务:在云中进行持续集成和交付的10种工具
持续集成 ci/cd 云和持续集成 (CI)是天生的匹配. 尽管云使我们摆脱了安装和维护物理服务器的痛苦,但持续集成可以自动消除构建,测试和部署代码的痛苦. 如果两家公司都希望把工作从开发团队的肩膀上 ...
- 在持续集成 (CI) 环境中使用 Android 模拟器 | AndroidDevSummit 中文字幕视频
在本次演讲中,Hoi Lam 和 Lingfeng Yang 将为大家讲解如何在持续集成 (CI) 环境中使用 Android 模拟器.包括近期发布的功能: 模拟器的 Docker 镜像,以及如何部署 ...
- 持续集成(CI)简单介绍
Continuous integration,简称CI 是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过自动化的 ...
- Gitlab+Docker实现持续集成(CI)与持续部署(CD)
作者:愤怒的小猿猿 blog.csdn.net/qq_27520051/article/details/80552220 GitLab CI/CD介绍 首先使用一张图说明GitLab CI的工作流程: ...
- 软件持续集成(CI)、持续交付(CD)和持续部署(CD)
CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法.CI/CD 的核心概念是持续集成.持续交付和持续部署.作为一个面向开发和运营团队的解决方案,CI/CD 主要针对在集成新代码时 ...
- 你真的理解持续集成(CI)吗?
目录 1.定义 2.核心理念 3.持续集成涵盖的三个阶段 3.1 第一阶段:每次提交触发完整的流水线(快速集成) 3.2 第二阶段:每次流水线触发自动化测试(质量内建) 3.3 第三阶段:出了问题可以 ...
最新文章
- php %3c%3c%3c 解析常量,PHP基础知识小结1
- 工作流引擎的硬功夫之1-表单自定义
- tensorflow tf.data.Dataset.from_tensor_slices() (创建一个“数据集”,其元素是给定张量的切片)
- java实时汇率的接口_汇率-免费API,收集所有免费的API
- linux用户恢复正常,Linux系统用户口令安全恢复方法
- promise之我见
- Mysql存储引擎中InnoDB与Myisam的区别
- php5.6 pdo.dll 没有,php5.6没有pdo怎么办
- 【2014-11-23】《The Hardware/Software Interface》– Section 11
- 方法覆盖异常篇 java 1615387415
- 哈工大-基于内核栈切换的进程切换
- 从开发到生产上线,如何确定集群大小?
- TTL转HDMI,首选LT8618SXB,提供技术支持
- Basic grammar of Python day2
- 帝国cms缩略图:网站不同地方生成不同的缩略图
- laravel5.5利用网易邮箱发送邮件
- Cisco 2960 3750交换机端口流量限速(QOS)
- 基于 SpringBoot 的个人博客系统设计与实现(含论文与程序代码).rar
- android 英汉字典,英汉全文字典安卓版
- Gateway服务网关使用教程