使用Travis CI自動打包APK,併發布到fir
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 -v
ruby 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 -v
1.8.2
3.專案啟動Travis CI
在第一步中,我們已經把一些專案在Travis CI打開了,選擇其中一個git checkout到電腦本地,並切換到專案的根目錄,先建立一個空的”.travis.yml檔案”,然後使用命令travis setup releases
E:\code\LikeWechatPhotoViewer>travis setup releases
Username: sherchen
Password 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-cli
after_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
[email protected]-PC MINGW64 /e/code/Transitions-Everywhere (master)
$ git tag -a v1.0.5 -m "1.測試tag 2.新的節點 3.測試AccessToken 4.去除多餘的-"
[email protected]-PC MINGW64 /e/code/Transitions-Everywhere (master)
$ git push origin --tags
Counting 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了。。
太好了,釋出成功了!^_^
為了方便分析問題,我上傳了成功執行的日誌,地址:
log.txt
做完了所有的這些,剩下來就是享受編碼。
相關推薦
使用Travis CI自動打包APK,併發布到fir
Travis CI 是目前新興的開源持續整合構建專案,越來越大的大公司也在使用Travis CI, Github每天構建量都在4000以上。我們為什麼不試試呢。 前言 我們平常的釋出流程大概如下: 使用Travis CI,可以簡化如下: 想象
[travis-ci]自動集成測試
服務 tps 莫名其妙 導入 blog ocs 發現 github上 http 自動運行測試的平臺https://travis-ci.org/ 可以自動導入測試github上的項目 因為yml文件格式錯誤會導致找不到配置文件, 這裏要註意啦, 掉坑裏了.... https
使用Travis CI自動部署博客到github pages和coding pages
option 依靠 sub post 電腦 安裝環境 在線 獨立 需要 每次換系統或換電腦之後重新部署博客總是很苦惱?想像jekyll那樣,一次性部署完成後,以後本地不用安裝環境直接 git push 就能生成博客?那推薦你應該使用使用 Travis CI了。 這篇文章我們
android studio分模組打包apk,多渠道打包,差異化打包
AS利用Gradle實現稍作修改(包名差異(需求如:測試機同時安裝測試版和釋出版)、功能較小差異、圖示應用名不同等較小差異化需求)打包多個不同apk的功能 實現方法 在APP的buid.gradle
製作ubuntu +tomcat容器映象,併發布至ICP映象庫
一、開始製作Ubuntu16.04系統映象 1、首先下載linux環境的tomcat和jdk,並分別解壓 apache-tomcat-7.0.81.tar.gz jdk-8u11-linux-x64.tar.gz 2、建立dockerfile檔案 FROM
springboot開發支援JSP,併發布為war包執行
<!--springboot tomcat jsp 支援開啟--> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId&g
封裝一個Python函式庫,併發布到PyPi
funclib.py 簡單介紹 Python的互動資料處理函式庫 Python自帶的幾個高階函式(map、reduce、filter)再搭配上lambda函式,堪稱上古神器! 但是,在資料處理頻繁的開發過程中,不論是web開發還是寫AC
開發vue外掛,併發布到npm
寫在前面 註冊npm 去npm官網上,註冊一個自己的npm賬號。(https://www.npmjs.com/),註冊完成之後,官網會提示你傳送郵件到你的郵箱,記得點擊發送一下,不然最後提交不上。還有一個比較坑的地方,最好不要隨便點選 這個是開啟/修改2FA的地
使用eclipse開發的RAP專案打包war包併發布到tomcat伺服器以及訪問該專案
建立完成專案之後:如下圖所示: 接下來就是要打war包了,那麼在專案空白處右鍵點選->new->進入如下的彈窗: 輸入war,然後找到WAR Product Configuration。 安裝完成之後,接下來就是打war包了:如下圖所示: 選擇
細述怎麼開發自己的外掛依賴,併發布到npm上
寫在文章前:一個在專案開發中通常遇到的需求,後臺返回一個時間戳,前臺需要處理成 xxxx年xx月xx日等格式的時間格式。通常我們會封裝成一個函式進行呼叫,但在本文中,就小題大作一下,一個這樣的需求怎麼寫成一個外掛依賴呢?a. this.timeformater('152809
Android 版本更新下載自動安裝APK,並解決Android6.0安裝失敗的問題
現在APP都有版本更新的功能,有的是跳轉到瀏覽器進行下載,感覺比較麻煩,使用者體驗也不好,簡便的方法就是直接下載安裝即可。即使用Android自帶的DownManager,通過啟動一個後臺服務進行下載,下載完成之後以廣播的形式通知使用者安裝,方便很多。 比較鬧
AndroidStudio 打aar、jar包,併發布到github詳細步驟
今天需要遠端依賴新增的元件包,正好簡單總結一下,希望對有需要的哥們以幫助! 步驟: 1、新建一個目錄作為jar或aar包以及釋出檔案生成輸出目錄(eg:components_publisher) 2、主工程檔案“gradle.properties”中新增“aar.depl
linux下實現svn自動拉取程式碼併發布
正常在釋出專案的時候是將專案打包成war包,並將程式碼上傳到伺服器中,執行伺服器,整個過程較為複雜,在測試過程中會涉及到多次程式碼的修改,重新打包釋出,這樣就很不友好,接下來就簡單介紹一種方法,只要執行一個shell指令碼檔案就能把整個過程全部搞定。 第一步:安裝svn
用eclipse把maven專案打包成war併發布到jboss伺服器上的步驟
第一步:開啟eclipse,對maven專案右擊,點擊出現的Debug As---->Debug configurations,點選Debug configurations,找到Maven Bu
Android Studio打包apk,aar,jar包
1jar vs aar 文字我們將講解android studio打包apk,aar,jar包的相關知識。apk包就是android系統的安裝包,這裡沒什麼好說的,aar包是android中獨有的類庫包,而jar包是java中特有的類庫包,在具體的介紹打包之前,我們
[.NET 開源] 高效能的 Swifter.MessagePack 已釋出,併發布新版本的 Swifter.Json 和 Swifter.Data。
抱歉各位朋友,由於各種私事公事,本應該在 19 年底釋出的 Swifter.MessagePack 庫延遲了這麼久才釋出,我深感抱歉。 MsgPack 簡介 MsgPack 一種非常輕巧的二進位制資料交換格式,巧妙的設計讓它相比其他二進位制資料格式更可讀,並且有著不錯的壓縮率和邏輯效能,是目前相當火熱的資
再探CI,Github調戲Action手記——自動構建併發布到另一倉庫
前言 接上文初探CI,Github調戲Action手記——自動構建併發布 在學習了Action的基本操作之後 接著我們來探索Action其他可能的功能 眾所周知 只有用得到的技術學習的才會最快 我也是如此 在完成了當前倉庫不同分支的構建釋出後,我又有了新的需求 自動構建後釋出到不同的倉庫 正文 我們直接新建一
Expo大作戰(十八)--expo如何發布成獨立應用程序,打包成apk或者ipa,發布到對應應用商店
密鑰 術語 資源 必備 target 必須 ble 反向 keystore 簡要:本系列文章講會對expo進行全面的介紹,本人從2017年6月份接觸expo以來,對expo的研究斷斷續續,一路走來將近10個月,廢話不多說,接下來你看到內容,講全部來與官網 我猜去全
Gradle實現自動打包,簽名,自定義apk文件名
回車 應用 types 背包 sdn 部署 密鑰對 另一個 密鑰庫 Gradle實現自動打包,簽名,自定義apk文件名 什麽是簽名,簽名有什麽用 Android APP都需要我們用一個證書對應用進行數字簽名,不然的話是無法安裝到Android手機上的,平時我們調試運行時到手
cocos2dx 命令建立各平臺工程,並自動打包Android apk的方法
轉自:http://www.cocos2d-x.org/projects/cocos2d-x/wiki/How_to_create_a_multi-platform_project_in_one_command_line How to create a multi-pla