Android项目持续集成-Travis CI

以前在写代码重构中提到,所有的重构都是建立在测试的基础上的, 没有测试覆盖的重构都是在耍流氓,其中我也提到了持续构建(CI)。传统的、非敏捷的软件创建方法通常依赖于一个更严格管制的开发流。瀑布流程就是这方面的一个示例,其中需求、设计、开发和测试的每个活动都是连续执行的。而现今互联网时期都受益于敏捷开发方式,他们主要采取快速迭代开发、多人协作式开发推动项目的发展。在代码或者项目开发过程中,就能发现问题。

什么是CI(持续集成)?

根据 Martin Fowler(现就职于ThoughtWorks) 的观点,持续集成(continuous integration)是一种软件开发实践,要求团队成员经常集成他们的工作。每个人至少每天集成一次,这导致每天有多个集成。集成是通过自动化的构建进行验证的,这些构建运行回归测试,以尽快检测集成错误。团队发现,这种方法会导致集成问题大幅减少,更快地实现有凝聚力的软件开发。

CI的目的就是及早地、经常地改正错误。这样就可以避免它们稍后在项目中发展成为更大、更难解决的问题。该技术提供的好处之一是能够提供在项目时间表中多个日期进行构建和测试的更小的功能性发布。通过验证来自团队的架构、需求和时间表估算,每个交付都降低了项目风险。

知乎上有一个相关问题的回答:如何理解持续集成、持续交付、持续部署? 大家可以看看。


说了这么多,CI这么好怎么用了?当然CI的工具很多,Jenkins、Travis CI、Circle CI等等。Jenkins现在主要用在工作中,特点是构建比较灵活,插件比较丰富。

Travis CI主要用在个人项目中, 主要于Github结合,构建简单。今天我们来说说Travis CI。

如何使用?

通过官网 说明,步骤和把大象装进冰箱一样多,也是三步:

1. 打开开关

2. 新建和配置.travis.yml文件

Travis CI使用YAML文件作为构建脚本,在项目根目录创建.travis.yml文件,下面主要是针对SDK API 23的配置。

android SDK和依赖相关:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
language: android
android:
components:
# Uncomment the lines below if you want to
# use the latest revision of Android SDK Tools
- platform-tools
- tools
# The BuildTools version used by your project
- build-tools-23.0.1
# The SDK version used to compile your project
- android-23
# Additional components
- extra-google-google_play_services
- extra-google-m2repository
- extra-android-m2repository
- addon-google_apis-google-19
# Specify at least one system image,
# if you need to run emulator(s) during your tests
- sys-img-armeabi-v7a-android-23
- sys-img-x86-android-17

模拟器相关:

1
2
3
4
5
6
7
8
9
10
11
12
13
# Emulator Management: Create, Start and Wait
before_script:
- echo no | android create avd --force -n test -t android-23 --abi armeabi-v7a
- emulator -avd test -no-skin -no-audio -no-window &
- android-wait-for-emulator
- adb shell input keyevent 82 &

编译和测试相关:

1
2
3
4
script:
- ./gradlew build connectedCheck

也可以指定JDK版本

1
2
3
jdk:
- oraclejdk8

3. 提交.travis.yml文件到远程库上

1
2
3
4
5
6
git add .
git ci -m "add travis config"
git push origin master

更多配置请参考官方文档 配置。

最后自动构建完成后, 所在的项目显示效果如下:

总结

从技术角度来看,CI 可以帮助团队更高效地工作。这些团队可能是跨职能的,创建配合工作的硬件和软件。他们在地理上可能是分散的,因为不断的集成工作将会确保您没有偏离设计。人们可以在大型团队中工作,因为复杂系统的不同组件将以更可靠的方式一起工作。CI 解决了许多非传统的敏捷团队在没有 CI 时可能都经历过的早期陷阱。CI 与测试驱动的开发相结合使更多人可以利用敏捷,因为它可以让敏捷方法更高效地工作。

祝大家使用愉快!

JasonThink wechat
欢迎您扫一扫上面的微信公众号,订阅我的博客!