使用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
做完了所有的这些,剩下来就是享受编码。
- 使用Travis CI自动打包APK,并发布到fir
- iOS自动打包并发布到Fir.im
- iOS一键搞定自动打包并发布到AppStore和Fir
- iOS- 一键自动打包发布到Fir和AppStore
- 手把手教你使用Travis CI自动部署你的Hexo博客到Github上
- 开始使用travis ci
- Travis CI使用笔记
- Unity打包IOS自动发布fir.im
- 使用travis-ci自动部署github上的项目
- mac jekins 配置iOS自动打包发布程序到fir.im
- Hexo遇上Travis-CI:可能是最通俗易懂的自动发布博客图文教程
- 用 travis-ci 自动部署 github 上的 angular2 项目到 centos7 的 vps
- iOS开发进阶 - 使用shell脚本自动打包上传到fir.im上
- Travis CI
- Travis CI
- Travis.ci
- 在OsX系统上使用Jenkins自动构建发布Unity3d的iOS版本到fir.im
- 徽章系列3: Travis CI 的使用
- 【Angular2】You have to be inside an angular-cli project in order to use the generate command
- web的Seo搜索优化
- 堆知识总结
- LeetCode 43. Multiply Strings
- 函数的高阶特性——Python学习笔记04
- 使用Travis CI自动打包APK,并发布到fir
- JSplitPane 监听分割位置
- 用Swift 给tableView加载xib创建的tableHeaderView时不显示问题
- Android问题:com.android.builder.packaging.DuplicateFileException
- eq相等 ne、neq不相等, gt大于, lt小于 gte、ge大于等于 lte、le 小于等于 not非 mod求模 等
- 在逻辑学中,SAP,SEP,SIP,SOP,SaP,SeP分别是什么意思?
- java基础教程:基础语法之术语和入口类(2)
- Combo Select 下拉框插件使用
- classpath