1. 程式人生 > >使用Travis CI自動打包APK,併發布到fir

使用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打包apkaarjar包

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 一種非常輕巧的二進位制資料交換格式,巧妙的設計讓它相比其他二進位制資料格式更可讀,並且有著不錯的壓縮率和邏輯效能,是目前相當火熱的資

再探CIGithub調戲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