什么是持续集成和持续交付?
持续集成
持续集成就是频繁地将代码集成到主干。持续集成的好处:
- 快速发现错误
- 防止分支大幅偏离主干
持续集成的目的就是快速产品迭代,同时保证质量。 持续集成的核心措施就是代码合并到主分支之前,必须经过自动化测试。 持续集成并不能消除或大量减少BUG,而是让BUG更容易发现和改正。
持续交付(Continuous delivery)
持续交付是频繁低将软件的新版本交付给测试者或用户,以供评审。若评审通过就进入生产阶段
flow.ci
flow.ci 是一个在线的持续集成和交付的服务站点,可以集成工作中的工具,并且支持多种插件。其目的就是将开发流程中编码之外的工作全部自动化。
支持的项目仓库:
- Github
- Bitbucket
- GitLab
- Coding
支持的语言:
- PHP
- Java for Android
- Node.js
- Ruby
- Python
集成过程-Android
登录进去之后,创建项目
选择代码仓库
选择项目所在的仓库,然后选择项目就行了。
开始创建工作流
点击创建第一个工作流,然后选择模板,选择Android默认模板。
配置模板
选择android 项目使用的JDK版本,然后上传签名的keystore文件, keystore的密码,Alias及Alias密码。
配置工作流
-
触发器:设定什么条件下触发构建,push代码到对应的分支,或发布tag的时候,或有pull request的时候。还可以知道定时任务。通过正则表达式匹配还可以指定多个分支
-
初始化:初始化项目的环境及一些配置,可以直接修改脚本中内容
-
Git仓库克隆:将仓库的代码clone到已经配置好的环境中
-
缓存:启用缓存之后,每次构建都会使用之前构架的缓存,主要缓存项目的依赖。
-
编译: 编译已经克隆的项目。编译支持android中gradle的各种任务,如build,打包,编译依赖,打包并测试等等
-
完成后 - 工作流执行完成或失败之后发送工作流执行的信息到指定的邮箱,或将信息发送到slack.
支持的插件:
- 自定义环境变量,环境变量作用域为整个工作流
- 自定义脚本,可以指定在工作流中执行的自定义的各种脚本
- android模拟器插件
- Infer代码质量检测工具,Facebook开源的静态代码分析工具,支持java,objective-c和C。
- fir.im 上传插件,将生成的安装包上传到fir.im.方便测试
- 七牛上传插件,将构建过程中产生的文件上传到七牛云存储
开始构建
工作流配置完成之后就可以开始构建了,返回到构建列表,点击开始构建,然后选择要构建的分支,点击构建,构建流程就按照配置的工作流开始了。
构建完成
构建过程之中可以直观的看到每一步的结果和输出的日志,还显示了每一步消耗的时间。
IOS集成
IOS的集成流程与android的流程基本一致,不同地方:
- 在iOS模板中要上传项目的Provisioning Profile和.p12证书
- 在工作流中会有安装和打包两个流程,配置也比较简单