2014-01-10 23 views
6

我正在開發一個Android庫(RateMyApp,你可以在GitHub上找到),但是我看不到我應該如何設置Travis CI來在每次推新代碼時構建它。我應該如何爲Android庫配置Travis-CI?

.travis.yml文件我用的是以下幾點:

language: java 
script: 
    - gradle bundleRelease 

,但它似乎被忽略,因爲gradle bundleRelease是永遠不會被調用。相反,我得到以下輸出,表明我調用了gradle assemble

Using worker: worker-linux-8-1.bb.travis-ci.org:travis-linux-5 

travis_fold:start:git.1 
$ git clone --depth=50 --branch=master git://github.com/mariosangiorgio/RateMyApp.git 
[...] 
mariosangiorgio/RateMyApp 
Cloning into 'mariosangiorgio/RateMyApp'... 
done. 
travis_fold:end:git.1  
$ cd mariosangiorgio/RateMyApp 
travis_fold:start:git.3 
$ git checkout -qf 90faf4539c835136895ea92dd2bcc7da12ad1145 
travis_fold:end:git.3 
$ java -version 
java version "1.7.0_45" 
Java(TM) SE Runtime Environment (build 1.7.0_45-b18) 
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode) 
$ javac -version 
javac 1.7.0_45 
travis_fold:start:install 
$ gradle assemble 
[...] 
The command "gradle assemble" failed and exited with 1 during install. 

Your build has been stopped. 

我讀了page linked in the documentation,但不幸的是它對我沒什麼幫助。

回答

3

這是我的yaml這是建立apk文件。但它應該也適用於圖書館。

language: java 
jdk: oraclejdk7 
branches: 
    only: 
    - master 
before_install: 
    - chmod +x gradlew 
    # Install base Android SDK 
    - sudo apt-get update -qq 
    - if [ `uname -m` = x86_64 ]; then sudo apt-get install -qq --force-yes libgd2-xpm ia32-libs ia32-libs-multiarch > /dev/null; fi 
    - wget http://dl.google.com/android/android-sdk_r22.0.5-linux.tgz 
    - tar xzf android-sdk_r22.0.5-linux.tgz 
    - export ANDROID_HOME=$PWD/android-sdk-linux 
    - export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools 
    # install android build tools 
    - wget https://dl-ssl.google.com/android/repository/build-tools_r19.0.1-linux.zip 
    - unzip build-tools_r19.0.1-linux.zip -d $ANDROID_HOME 
    - mkdir -p $ANDROID_HOME/build-tools/ 
    - mv $ANDROID_HOME/android-4.4.2 $ANDROID_HOME/build-tools/19.0.1 
    # Install required components. 
    - echo yes | android update sdk --filter platform-tools --no-ui --force > /dev/null 
    - echo yes | android update sdk --filter android-19 --no-ui --force > /dev/null 
    - echo yes | android update sdk --filter extra-android-support --no-ui --force > /dev/null 
    - echo yes | android update sdk --filter extra-android-m2repository --no-ui --force > /dev/null 
install: 
    - true 
script: 
    - TERM=dumb ./gradlew test assembleDebug 

但要小心,因爲這個劇本不推建的人工製品的任何地方

+0

謝謝!你能否給我指示一些我可以閱讀的東西讓TravisCI發佈文物? – mariosangiorgio

+0

不幸的是它不起作用。我收到了[錯誤消息](https://travis-ci.org/mariosangiorgio/RateMyApp/builds/16812539)。你有什麼想法可能會導致它? – mariosangiorgio

+1

您可以在Gradle行中添加'TERM = dumb'' - TERM = dumb ./gradlew bundleRelease' –

3

我用在.travis.ymlSDK installer腳本Hilt

language: java 
jdk: oraclejdk7 
before_install: 
    # Install base Android SDK and components 
    - sudo apt-get update -qq 
    - sudo apt-get install -qq libstdc++6:i386 lib32z1 expect 
    - export COMPONENTS=build-tools-19.0.3,android-19,extra-android-support,extra-android-m2repository,extra-google-m2repository 
    - export LICENSES=android-sdk-license-bcbbd656 
    - curl -3L https://raw.github.com/embarkmobile/android-sdk-installer/version-2/android-sdk-installer | bash /dev/stdin --install=$COMPONENTS --accept=$LICENSES 
    - source ~/.android-sdk-installer/env 

install: 
    # Without TERM=dumb, we get mangled output in the Travis console 
    - TERM=dumb ./gradlew clean assemble -PdisablePreDex 

script: 
    - TERM=dumb ./gradlew check -PdisablePreDex 

編輯:特拉維斯-CI已經實現Android作爲頭等公民 - http://blog.travis-ci.com/2014-05-07-android-build-support-now-in-beta/

1

爲了解決爲什麼你看到的gradle assemble代替gradle bundleRelease

gradle assemble默認情況下,在調用Travis的install:階段(關於階段的描述參見Travis docs,以及this note)。

由於您的腳本沒有install:部分來覆蓋默認值,因此Travis正在調用gradle assemble

可以防止這種通過添加以下行,它告訴特拉維斯不要在安裝階段做任何事情:

install: 
    - true 

a similar issue,與特拉維斯執行gradle assemble時,我想它來執行gradlew assembleDebug

所以,對我來說,一個完整的工作腳本(截至2014年5月1日Android as a first class citizen的)是:

language: android 
jdk: oraclejdk7 

android: 
    components: 
    - build-tools-19.0.1 

install: 
    - true 

script: TERM=dumb ./gradlew assembleDebug 

感謝Austyn馬奧尼澄清這對我來說here

EDIT

自2014年5月8日的,特拉維斯CI已除去爲Android的β默認install:階段,如所討論here。因此,您現在應該可以從腳本中刪除install:階段,而Travis不應該執行gradle assemble

相關問題