正式项目中持续集成功能比不可少,但个人在编写简单开源项目(比如 Android 自定义 View)的时候,常见 CI 工具稍显笨重。为此 GitHub 提供了丰富的接口,方便第三方提供简单易用的 CI 工具,其中最常见的就是 Travis。
免费的 Travis 服务使用的网址为 https://travis-ci.org ,面向开源项目,提供的服务足够个人使用。同时,Travis 和 GitHub 联系紧密,可以直接使用 GitHub 账号注册 Travis 用户。
添加 CI 服务的方式很简单:之后,进入同步页面:选择 “Sync account” 按钮,可以浏览所有 GitHub 上托管的项目,在对应项目前选择是否开启 CI 服务。
而后,就是编写 Travis 的 CI 服务需要的配置文件,即在项目的根目录下新建文件 .travis.yml
一般配置文件的结构为:
1
2
3
4
5
6
7
8
| # 项目语言
language:
# 项目构建脚本
script:
# 构建缓存设置
cache:
# 部署脚本
deploy:
|
官方文档页面提供了不同语言项目的不同配置文件参考文档。以 Android 项目为例,常见的配置文件为:
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
| language: android
jdk: oraclejdk8
android:
components:
- platform-tools
- tools
- build-tools-25.0.2
- android-25
- android-16
- extra-android-support
- sys-img-armeabi-v7a-android-16
- extra-android-m2repository
before_script:
- echo no | android create avd --force -n test -t android-16 --abi armeabi-v7a
- emulator -avd test -no-audio -no-window &
- android-wait-for-emulator
- adb shell input keyevent 82 &
- chmod +x gradlew
script:
- "./gradlew clean connectedAndroidTest --stacktrace"
notifications:
email: true
before_cache:
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
- rm -fr $HOME/.gradle/caches/*/plugin-resolution/
cache:
directories:
- "$HOME/.m2"
- "$HOME/.gradle"
- "$HOME/.gradle/caches/"
- "$HOME/.gradle/wrapper/"
|
这其中 components
部分需要参考自己项目的构成按照需要添加,其余的代码基本是不变的,可以直接复制黏贴。
特别要注意的是 chmod +x gradlew
命令添加执行权限是不可少的,不然之后的 gradlew
脚本会报错。而且在测试或构建等动作之前最好先执行 gradlew clean
任务,能保证排除错误上传多余文件或者构建失败残留文件等的影响。
Android 项目部署到 GitHub Release 的步骤也比较简单,需要在配置文件的脚本 script
项后加入如下语句:
1
| - "./gradlew assembleRelease"
|
而后,编写 deploy 功能配置信息:
1
2
3
4
5
6
7
8
9
10
11
| before_deploy:
- mv clearableedittext/build/outputs/aar/clearableedittext-release.aar clearableedittext/build/outputs/aar/clearableedittext.aar
deploy:
provider: releases
api_key:
secure: ... # 由 CLI 程序生成
file: clearableedittext/build/outputs/aar/clearableedittext.aar
skip_cleanup: true
on:
tags: true
|
before_deploy
设置一般把生成的文件改名或移动到其他位置,而后在 deploy
设置中的子项 file
指定需要发布到 GitHub Release 的文件。
这里要注意的是发布功能需要验证,虽然也可以通过在配置文件中提供 GitHub 用户名和密码的方式实现,但是实在很不安全,也没有多少人使用。一般是使用 Travis 官方提供的 CLI 工具生成安全验证码填入 secure
项目。
CLI 程序是 Ruby 实现的需要使用 RubyGems 安装:
1
| gem install travis --no-rdoc --no-ri
|
而后在项目根目录(有 .travis.yml
的目录)的地方运行命令:
之后,安装命令行的提示一步步输入内容即可,程序会自动生成相应的安全码填入配置文件中。
另外,使用 travis lint
还能验证配置文件的格式。