使用Travis CI自动打包APK,并发布到fir

来源:互联网 发布:terminal mac 编辑:程序博客网 时间:2024/05/29 23:23

Travis CI 是目前新兴的开源持续集成构建项目,越来越大的大公司也在使用Travis CI, Github每天构建量都在4000以上。我们为什么不试试呢。

前言

我们平常的发布流程大概如下:
这里写图片描述
使用Travis CI,可以简化如下:
这里写图片描述
想象这样的场景:马上要发布内测版本了,合并代码之后,开始用IDE打包,打包完成之后再发布到fir,这样整个流程下来估计要10几分钟,电脑被占用其他事情也做不了,(⊙﹏⊙)b。使用Travis CI,你只需要提交代码,创建tag,再提交tag,还可以通过在Travis CI中加上几个通知邮箱(比如测试经理,产品经理,项目经理),而你可以什么都不用管了,安安心心做你自己的事情,这样不要太爽。

接下来介绍下如何使用Travis CI

1.配置Travis CI项目

首选进入Travis CI 官网,你会看到下面图标
这里写图片描述用github账户登录之后,选择哪个项目使用Travis CI自动构建, 开关打开就行了。
这里写图片描述

2.安装ruby和Travis Ci

因为Travis CI是使用ruby开发的,所以需要先安装ruby,安装完后,使用命令

E:\code\Transitions-Everywhere>ruby -vruby 2.3.3p222 (2016-11-21 revision 56859) [i386-mingw32]

安装Travis CI

gem install travis -v 1.8.0 --no-rdoc --no-ri

查看Travis CI版本

E:\code\Transitions-Everywhere>travis -v1.8.2

3.项目启动Travis CI

在第一步中,我们已经把一些项目在Travis CI打开了,选择其中一个git checkout到电脑本地,并切换到项目的根目录,先创建一个空的”.travis.yml文件”,然后使用命令travis setup releases

E:\code\LikeWechatPhotoViewer>travis setup releasesUsername: sherchenPassword for sherchen: ***************File to Upload:Deploy only from Sherchen/LikeWechatPhotoViewer? |yes|Encrypt API key? |yes|

执行上面的命令之后,”.travis.yml”文件多了一些东西

deploy:  provider: releases  api_key:    secure: aIdot0oreg3u92HOW5QXpmBq2EjPOTDS5t3DnbMu9wBsQiMdvtaKtJkmJ4lPvB1hE2kPPeJFFCvqr1Gj/chpTocXIIPurHjSrO7Heez16aJDd86oFK1ySBCFLgwy6XVuM7VlTTWzfg4Eo2NnMvRI/W/b4SkyCEZgubsNPd8H0EJ6+epGlV3riEvG3JrHVxGo+FDZhW6mzLKdLha0vMn73JdfXMkQoioTsObdI/mck+SbqtOieuSwfwY5IIJefDAE1BgAEZbfqogKyNZ95okY8iPGkXfuFYBk8QDKBRo/VXOIlMrMgSKwR7/060fMmVEkDO6al7AN33CIeBUSPO0mznB+z5TMyDJVfvhEcKpltIC5vnn9X3G6rjN3sjY7w5KeMUpeIgUigGzTaCjhUFi00ZulWtu4mWPbNzG5O4uGFZBGApK9+vIO4DKHxROVxzP+drxZLMksLRGGsEOtcWCWnD7X93ZMwzOgWr7w5LP/QZeQhGLxupkZNMq4PTg/mYKOop/9fvIXkCQkp/nRZaUXNg5LPFlpBUHlB1rF6W+vrW1juCI9z+23R09mPKJ0zEba9VWPZvv4NDkwj4y4mh6zylQYjYJLiJ78nGA/BGbqKlQN7J/Epdci7PKcyXo2BOxxTPIoJYH+JZ4vqm91pUj2Mc6X5o7su+9avqmCJZr5RiA=  file: ''  on:    repo: Sherchen/LikeWechatPhotoViewer

这是travis自动给我们配置的,是为了后面把releases提交到github上。

做完了这些之后,需要去了解下travis的脚本语言。
这里写图片描述
上面是我画的travis自动构建的生命周期,其中

  • 可选的意思是,如果我们在.travis.yml加了就会执行,不加构建器就会忽略
  • 没有可选标志,就意味着你可以自定义,没有自定义,构建器会使用默认的。

更多详细信息可以去travis 文档了解。

4.需要注意

4.1 可以给构建器配置环境变量

回到travis网站 ,比如我选择其中一个项目
这里写图片描述
找到我配置的环境变量
这里写图片描述
这些环境变量可以在两个地方用

  • 在gradle文件中使用,通过System.getenv()
signingConfigs {        releaseConfig {            storeFile file("../sherchen20170602.keystore")            storePassword project.hasProperty("KEYSTORE_PASS") ? KEYSTORE_PASS : System.getenv("KEYSTORE_PASS")            keyAlias project.hasProperty("ALIAS_NAME") ? ALIAS_NAME : System.getenv("ALIAS_NAME")            keyPassword project.hasProperty("ALIAS_PASS") ? ALIAS_PASS : System.getenv("ALIAS_PASS")        }    }
  • 在.travis.yml文件使用,通过$获取,比如
fir publish sample/build/outputs/apk/sample-release.apk -T $FIR_TOKEN -c "`git cat-file tag $TRAVIS_TAG`"

4.2 给keystore文件加密

使用如下命令加密

travis encrypt-file xx.keystore --add

执行完命令,会有一些提示信息,按照它的提示做就行

NOTE: 只支持Linux, Mac, 不支持Windows

4.3 使用lint检查

有些时候我们很容易.travis.yml,导致构建器构建失败,为了避免浪费时间,可以使用lint 检查。

5.自动发布到fir.im

需要添加如下

before_install:- gem install fir-cliafter_deploy:- fir p app/build/outputs/apk/app-release.apk -T $FIR_TOKEN -c "`git cat-file tag $TRAVIS_TAG`"

FIR_TOKEN是fir的apiToken,copy到travis成环境变量
但是安装fir-cli需要ruby 2.0以上,所以要添加如下

- rvm install 2.1.5 //安装ruby 2.1.5

6. 提交代码和发布版本

6.1 提交代码

和正常情况一样

git add .git commit -m "注释"git push origin

我这里贴下日志

The command "./gradlew :sample:assembleRelease" exited with 0.Skipping a deployment with the releases provider because this is not a tagged commit

上面的意思是:如果没有tag的代码提交,就不会走deploy,所以after_deploy也不会走,所以也就不会发布到fir.

6.2发布版本

我们需要一个tag commit

dave@Dave-PC MINGW64 /e/code/Transitions-Everywhere (master)$ git tag -a v1.0.5 -m "1.测试tag 2.新的节点 3.测试AccessToken 4.去除多余的-"dave@Dave-PC MINGW64 /e/code/Transitions-Everywhere (master)$ git push origin --tagsCounting objects: 1, done.Writing objects: 100% (1/1), 222 bytes | 0 bytes/s, done.Total 1 (delta 0), reused 0 (delta 0)To https://github.com/Sherchen/Transitions-Everywhere.git * [new tag]         v1.0.5 -> v1.0.5

看下是否发布到fir了。。
这里写图片描述

太好了,发布成功了!^_^

有兴趣的同学,可以看看我是怎么写的,代码地址:
Transitions-Everywhere

为了方便分析问题,我上传了成功执行的日志,地址:
log.txt

做完了所有的这些,剩下来就是享受编码。

阅读全文
1 0
原创粉丝点击