持续集成和交付-Flow.ci

Posted by steven on September 16, 2016

什么是持续集成和持续交付?

持续集成

持续集成就是频繁地将代码集成到主干。持续集成的好处:

  • 快速发现错误
  • 防止分支大幅偏离主干

持续集成的目的就是快速产品迭代,同时保证质量。 持续集成的核心措施就是代码合并到主分支之前,必须经过自动化测试。 持续集成并不能消除或大量减少BUG,而是让BUG更容易发现和改正。

持续交付(Continuous delivery)

持续交付是频繁低将软件的新版本交付给测试者或用户,以供评审。若评审通过就进入生产阶段

flow.ci

flow.ci 是一个在线的持续集成和交付的服务站点,可以集成工作中的工具,并且支持多种插件。其目的就是将开发流程中编码之外的工作全部自动化。

支持的项目仓库:

  • Github
  • Bitbucket
  • GitLab
  • Coding

支持的语言:

  • PHP
  • Java for Android
  • Node.js
  • Ruby
  • Python

集成过程-Android

登录进去之后,创建项目

选择代码仓库

image
选择项目所在的仓库,然后选择项目就行了。

开始创建工作流

image 点击创建第一个工作流,然后选择模板,选择Android默认模板。

配置模板

image 选择android 项目使用的JDK版本,然后上传签名的keystore文件, keystore的密码,Alias及Alias密码。

配置工作流

image

  1. 触发器:设定什么条件下触发构建,push代码到对应的分支,或发布tag的时候,或有pull request的时候。还可以知道定时任务。通过正则表达式匹配还可以指定多个分支

  2. 初始化:初始化项目的环境及一些配置,可以直接修改脚本中内容 image

  3. Git仓库克隆:将仓库的代码clone到已经配置好的环境中

  4. 缓存:启用缓存之后,每次构建都会使用之前构架的缓存,主要缓存项目的依赖。

  5. 编译: 编译已经克隆的项目。编译支持android中gradle的各种任务,如build,打包,编译依赖,打包并测试等等

  6. 完成后 - 工作流执行完成或失败之后发送工作流执行的信息到指定的邮箱,或将信息发送到slack.

支持的插件:

  • 自定义环境变量,环境变量作用域为整个工作流
  • 自定义脚本,可以指定在工作流中执行的自定义的各种脚本
  • android模拟器插件
  • Infer代码质量检测工具,Facebook开源的静态代码分析工具,支持java,objective-c和C。
  • fir.im 上传插件,将生成的安装包上传到fir.im.方便测试
  • 七牛上传插件,将构建过程中产生的文件上传到七牛云存储

开始构建

工作流配置完成之后就可以开始构建了,返回到构建列表,点击开始构建,然后选择要构建的分支,点击构建,构建流程就按照配置的工作流开始了。

构建完成

image 构建过程之中可以直观的看到每一步的结果和输出的日志,还显示了每一步消耗的时间。

IOS集成

IOS的集成流程与android的流程基本一致,不同地方:

  • 在iOS模板中要上传项目的Provisioning Profile和.p12证书
  • 在工作流中会有安装和打包两个流程,配置也比较简单