2014-01-10 2 views
6

Ich entwickle eine Android-Bibliothek (RateMyApp, die Sie auf GitHub finden können), aber ich kann nicht sehen, wie ich Travis CI einrichten sollte, um es jedes Mal zu bauen, wenn ich neuen Code drücke.Wie sollte ich Travis-CI für eine Android-Bibliothek konfigurieren?

Die .travis.yml Datei ich verwende ist die folgende:

language: java 
script: 
    - gradle bundleRelease 

aber es scheint, um ignoriert zu werden, weil gradle bundleRelease nie aufgerufen wird. Stattdessen bekomme ich die folgende Ausgabe, die mir vorschlägt, dass stattdessen gradle assemble aufgerufen wird.

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. 

las ich die page linked in the documentation aber es war nicht viel hilfreich für mich leider.

Antwort

3

Hier ist meine yaml Datei, die Apk baut. Aber es sollte auch für die Bibliothek funktionieren.

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 

Aber Vorsicht, da dieses Skript nicht gebaut Artefakt nicht schieben überall

+0

Vielen Dank! Kannst du mir bitte Anweisungen zu etwas geben, das ich lesen kann, damit TravisCI irgendwo Artefakte veröffentlicht? – mariosangiorgio

+0

Leider funktioniert es nicht. Ich habe [eine Fehlermeldung] erhalten (https://travis-ci.org/mariosangiorgio/RateMyApp/builds/16812539). Hast du eine Vorstellung davon, was es verursachen könnte? – mariosangiorgio

+1

Könnten Sie hinzufügen 'TERM = dumm' in der Gradlinie '- TERM = dumm ./gradlew bundleRelease ' –

3

Ich verwende eine SDK installer Skript im .travis.yml für 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 

EDIT: Travis-CI hat Android als First-Class-Objekt implementiert - http://blog.travis-ci.com/2014-05-07-android-build-support-now-in-beta/

1

zu adressieren, warum Sie sehen gradle assemble statt gradle bundleRelease:

gradle assemble standardmäßig aufgerufen wird, in die Stufe install: von Travis (siehe Travis docs für die Beschreibung der Stufen und this note).

Da Sie keinen install: Bereich Ihres Skripts haben, um den Standard zu überschreiben, ruft Travis gradle assemble auf.

Sie können dies verhindern, indem Sie die folgenden Zeilen hinzufügen, die Travis sagt nichts in der Phase zu tun, installieren:

install: 
    - true 

Ich hatte a similar issue, mit Travis gradle assemble ausführt, wenn ich es gradlew assembleDebug ausführen wollte.

Also, für mich, ein komplettes Arbeits Skript (Stand 1. Mai 2014 mit Android as a first class citizen) ist:

language: android 
jdk: oraclejdk7 

android: 
    components: 
    - build-tools-19.0.1 

install: 
    - true 

script: TERM=dumb ./gradlew assembleDebug 

Dank Austyn Mahoney diese here für mich zu klären.

EDIT

Ab 8. Mai 2014 hat Travis CI die Standard install: Bühne für die Android Beta entfernt, wie here diskutiert. Daher sollten Sie jetzt die Stufe install: aus Ihrem Skript entfernen können, und Travis sollte gradle assemble nicht ausführen.