1. 首页
  2. IT资讯

Travis CI 邂逅 GitHub、Maven、Fir.im

这篇文章的目的很简单,就是要实现当我们在 GitHub 上创建应用或库的时候,Travis CI 可以帮助我们构建工程,可以把应用每次打的tag提交到 GitHub 的 releases 上,也可以把库构建完的每次版本提交到 Maven 上,还可以把应用发布到 Fir.im 上,成功或失败邮件通知我们。

目录

  • Travis CI
    • Travis CI 是什么?
    • Travis CI 配置
    • .travis.yml 中的属性
  • 构建中涉及到的证书及密码问题
  • 提交到 GitHub 的 releases
  • 提交到 Maven
  • 发布到 Fir.im
  • 通知开发者
  • 其它
    • git tag
    • studio 3.0 前后的打包
    • gradlew 的命令
    • 个人应用示例

Travis CI 是什么?

Travis CI 是一种自动化持续集成工具,类似于公司经常使用的 Jenkins,但是 Travis CI 运行在云端支持 GitHub,我们可以用 Travis CI 做很多的事情,所以使用该工具完全可以满足我们的需求,解决我们的痛点。

Travis CI 配置

首先第一步你需要到 travis-ci.org 网站上用你的 GitHub 帐号注册登录,需要注意的是 Travis 分为开源项目版本与付费项目版本。

开源版本域名:https://travis-ci.org​ 付费版本域名:https://travis-ci.com 

我们使用免费的版本就可以了,登录成功后,Travis 会同步你的 GitHub 仓库,如果你想为你的 GitHub 开源项目添加 Travis 持续集成,打开项目名字前面的开关就可以了。

第二步就是在本地配置 Travis 了,当前我的 Travis 版本是1.8.8,安装命令如下:

$ gem install travis -v 1.8.8 

安装中可能遇到各种各样的问题,比如依赖其它的配置如ruby,或者travis镜像同步不下来,I believe you can fix it. 安装完毕后,检验一下是否成功:

$ travis -v 

.travis.yml 中的属性

配置完 Travis 后,第三步在你项目的根目录下新建一个 .travis.yml 文件,编辑完后需要提交到 GitHub 上,下面我们先添加一下基本信息,需要注意的是 Travis 对格式很敏感的。

你可以查看他们的文档,配置 Android 项目的地址:​https://docs.travis-ci.com/user/languages/android/,我项目的基本配置如下:

language: android jdk: oraclejdk8 sudo: true  android:   components:   - tools   - platform-tools   - tools   - build-tools-27.0.3   - android-27   - sys-img-armeabi-v7a-android-27   - extra-android-support   - extra-android-m2repository   - extra-google-m2repository   - add-on   - extra   licenses:   - android-sdk-preview-license-52d11cd2   - android-sdk-license-.+   - google-gdk-license-.+ 

Travis CI 在执行构建的时候也是有生命周期的,比如下面这些见名知意Hook住构建过程的方法:

before_cache: 缓存之前   ... cache: 缓存的时候   ... before_install: 安装之前   ... before_script: 执行命令之前   .... script: 执行命令的时候   ... deploy: 部署的时候   ... after_deploy: 部署之后   ... notifications: 通知的时候   ... 

“…” 就是我们要添加的构建命令,完成这些命令就可以解决我们的目的了,比如让我们的构建任务支持缓存,一般指定在.gradle目录下的缓存,如下:

before_cache: - rm -f  $HOME/.gradle/caches/modules-2/modules-2.lock - rm -fr $HOME/.gradle/caches/*/plugin-resolution/  cache:   directories:   - "$HOME/.gradle/caches/"   - "$HOME/.gradle/wrapper/"   - "$HOME/.android/build-cache" 

构建中涉及到的证书及密码问题

首先可能你不想将签名文件传到 GitHub 上,那么我门将签名文件加密,将加密后的文件上传就可以了,加密的命令:

$ travis encrypt-file /../keystore.jks --add 

该命令执行完后,会在你的 .travis.yml 文件中追加以下信息:

before_install: - openssl aes-256-cbc -K $encrypted_634573b3a4f8_key -iv $encrypted_634573b3a4f8_iv   -in signings/keystore.jks.enc -out signings/keystore.jks -d 

还会在 https://travis-ci.org/你的GitHub名称/你的项目名称/settings 下面添加加密后的key和value,执行完上面的加密命令后你可以去查看下,除了这个证书的问题,涉及到提交到 Maven 和发布到 Fir.im 都需要相应的 token,这些token信息也是不应该外泄的,我们可以手动在那下面添加这些信息,再需要执行对应命令的时候通过 $XXX_TOKEN 引用即可。

提交到 GitHub 的 releases

下面就是配置 Travis CI 自动发布apk文件到 Github releases 上的命令,执行如下命令:

$ travis setup releases 

执行完这个命令,Travis 同样会在你的 .travis.yml 文件下追加如下信息:

deploy:   provider: releases   api_key:     secure: 生成的Key   file: 你输入的apk路径   on:     repo: 你的工程 

你可以查看下.travis.yml 文件,但是这些信息还不够,我们还要人为的添加如下命令:

deploy:   skip_cleanup: true   on:     tags: true     all_branches: true 

skip_cleanup:这个命令很重要,默认情况下 Travis CI 在完成编译后会清除所有生成的文件,因此需要设置 skip_cleanup: true 来忽略此操作,否则他会找不到你的apk如果你默认生成的apk路径在build目录下的话。
on:发布的时机,我的设置是 tags: true,即只在有打tag的情况下才会部署发布。

提交到 Maven

我的库都是通过 https://github.com/novoda/bintray-release 提交到 jcenter 上的,bintray-release 的使用很简单,请自行解决哈,如果前面配置的都没问题,我们只需配置一行命令就可以发布我们的库:

after_deploy: - "./gradlew clean build bintrayUpload -PbintrayUser=sfsheng0322 -PbintrayKey=$BINTRAY_TOKEN -PdryRun=false" 

发布到 Fir.im

关于 fie-cli 插件更多的信息,请访问 https://github.com/FIRHQ/fir-cli,我的配置如下:

before_install: - gem install fir-cli after_deploy: - fir p app/release/Gank.IO.apk -T $FIR_TOKEN -c "`git cat-file tag $TRAVIS_TAG`" 

通知开发者

配置下你的邮箱就可以了,构建完成需要部署的话,成功或失败都会邮件通知你的。

notifications:   email:   - sfsheng0322@126.com 

git tag

最后一步,打个 tag,让 Tavis 跑起来,构建我们的项目,该提交提交,该发布发布。

查看tag git tag  //打tag   $ git tag -a V1.0.0 -m "注释"   $ git push origin V1.0.0    //删除本地tag   $ git tag -d V1.0.0  //删除远程tag   $ git push origin --delete tag V1.0.0 

studio 3.0 前后的打包

android studio 3.0 之前 gradle 简单的打包脚本

def generateApkBefore3_0(variant) {     variant.outputs.each { output ->         output.outputFile = new File(project.rootDir.absolutePath + "/app/outputs", "XXX.apk")     } } 

android studio 3.0 之后 gradle 简单的打包脚本

def generateApkAfter3_0(variant) {     if (variant.buildType.name == "release") {         variant.getPackageApplication().outputDirectory = new File(project.rootDir.absolutePath + "/app/outputs")         variant.getPackageApplication().outputScope.apkDatas.forEach { apkData ->             apkData.outputFileName = "XXX.apk"         }     } } 

gradlew 的命令

$ ./gradlew assemble //为所有构建类型创建apk   $ ./gradlew check //运行所有的检查,比如说Android Lint,如果发现问题可终止任务   $ ./gradlew build //运行以上两个任务   $ ./gradlew clean //清除生成的apk   $ ./gradlew connectedCheck //在设备上运行测试   $ ./gradlew deviceCheck //远程设备运行测试   $ ./gradlew installDebug/installRelease //在设备商安装指定版本   $ ./gradlew uninstall //卸载应用   

个人应用示例

下面我的两个库都应用了 Travis CI,看完这篇文章如果您有这个需求,请参考:

GroupRecyclerViewAdapter
可增删改查、可展开收起的分组列表,轻松帮你实现【微信-我】等类似页面,动态可配置。
​地址: https://github.com/sfsheng0322/GroupRecyclerViewAdapter

FirUpdater
Fir.im通道APK更新器,使用简单,让自己的demo快速具备升级功能。
地址: https://github.com/sfsheng0322/FirUpdater

  • 点赞
  • 收藏
  • 分享

    • 文章举报

Travis CI 邂逅 GitHub、Maven、Fir.im Travis CI 邂逅 GitHub、Maven、Fir.im
cpongo333xiugai

企业博客

发布了1万+ 篇原创文章 · 获赞 107 · 访问量 34万+

私信 关注

原文始发于:Travis CI 邂逅 GitHub、Maven、Fir.im

主题测试文章,只做测试使用。发布者:sys234,转转请注明出处:http://www.cxybcw.com/98313.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code