持续集成对于大多数的工程师应该是比较熟悉的一个概念,大部分的公司都有集成这一说法,如果不知道可以看看百度百科的定义:

持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。

说白了就是你提交代码后会手动或者自动触发软件编译,并在编译出对应版本软件后对其进行自动化测试和对外发布。
目前有很多自动化集成构建工具,可能大家最熟悉的就是jinkins了,但是随着Github的兴起,更多的人更偏向于借助一个已经搭建好的自动化构建服务器,而不是自己去搭建。如果你还在为选择GitHub集成工具而苦恼,那么可以先看下如下的这篇文章:
程序员必读:七款出色的GitHub功能集成工具
我个人选择的是Travis CI,也没啥原因就是感觉合胃口。这篇文章将会对Travis CI的使用进行一个介绍:
在开始介绍之前先贴出一篇Travis CI CEO对整个的见解:
The Smallest Distributed System

至于为啥要使用Travis CI,就我个人而言就两点:

  • 满足我日常需求
  • 易用

如果你需要更为官方的理由来说服你,那么就看下下面的文章吧,其实没多大必要,每个软件都会有受众,并且都有人说好,有人说坏,简单了解下就可以了:

5 Great Reasons to Use Travis-CI

  1. 首先登入:Travis-CI 官网

  1. 点击右上角的sign in with github按钮,会进入github的登入界面:

  2. 在要触发编译的项目上打开开关:

  1. 先在项目根目录创建.travis.yml文件,在.travis.yml文件中配置Travis-CI:
    目前Travis已经支持如下编程语言的编译了:

但是这里我们只介绍用于Android项目中的.travis.yml的编写,要学习.travis.yml的编写,最高效的方法就是查看别人开源库中怎么配置,为什么要这么配置,每项配置的含义:
下面是我自己使用的比较完整的一个配置文件,每个项目根据自己的需求来对这些开关进行配置。最简单的.travis.yml 一般只需要包含language,jdk,android,components,before_script,script 即可,配置越多编译完成地越慢。

# 表示当前的项目为Android项目,Travis CI 看到这个配置后将会提供 JVM 语言所需要的编译工具比如JDKs, Ant, Gradle, Maven等.
language: android
jdk:
- oraclejdk8
#- openjdk7
#- oraclejdk7
# 配置一些环境变量
env:
global:
- ANDROID_API_LEVEL=23
- ANDROID_BUILD_TOOLS_VERSION=23.0.3
- ANDROID_ABI=armeabi-v7a
- ADB_INSTALL_TIMEOUT=8 # minutes (2 minutes by default)
- ANDROID_EMULATOR_API=23
# 编译的分支选择
branches:
only:
- master
#except:
#- xxxx

# 所需的部件
android:
components:
# 使用最新的Android SDK工具
- platform-tools
- tools
# 编译工具的版本,这个可以在Build.gradle中查看
- build-tools-$ANDROID_BUILD_TOOLS_VERSION
# 编译项目所需要的SDK 版本
- android-$ANDROID_API_LEVEL
# 额外的components
- extra
#- add-on
# 更具体的方式
#- extra-google-google_play_services
#- extra-google-m2repository
#- extra-android-m2repository
#- addon-google_apis-google-19
# 用于运行测试用例的模拟器
- sys-img-x86-android-$ANDROID_EMULATOR_API
- sys-img-armeabi-v7a-android-$ANDROID_EMULATOR_API

# 在运行脚本之前创建模拟器
# Emulator Management: Create, Start and Wait
before_script:
- chmod +x gradlew
- echo no | android create avd --force -n test -t android-$ANDROID_EMULATOR_API --abi $ANDROID_ABI
- emulator -avd test -no-audio -no-window &
- android-wait-for-emulator
- adb shell input keyevent 82 &
# 要运行的脚本
script:
- android list target
- ./gradlew connectedAndroidTest
- ./gradlew clean assemble check

# 安装代码统计
before_install:
- pip install --user codecov
after_success:
- codecov

# 这个不知道啥用
before_cache:
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
cache:
directories:
- $HOME/.m2
- $HOME/.gradle/caches/
- $HOME/.gradle/wrapper/
# 是否邮件通知结果
notifications:
email: false

# 证书相关
#licenses:
# - android-sdk-license-.+
# - google-gdk-license-.+

  1. Travis-CI 生命周期

下面是Travis-CI的生命周期,我们可以对这些生命周期节点进行配置如上面所示:

before_install
install
before_script
script
after_success or after_failure
OPTIONAL before_deploy
OPTIONAL deploy
OPTIONAL after_deploy
after_script
Contents