我正在开发一个Android库(RateMyApp,您可以在GitHub上找到它)但我无法看到每次推送新代码时我应该如何设置它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,但不幸的是,这对我没什么帮助。
答案 0 :(得分:3)
这是构建apk的我的yaml
文件。但它也适用于图书馆。
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
但要小心,因为这个脚本不会在任何地方推送构建的人工制品
答案 1 :(得分:3)
我在SDK installer .travis.yml
中使用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
编辑: Travis-CI已将Android作为一等公民实施 - http://blog.travis-ci.com/2014-05-07-android-build-support-now-in-beta/
答案 2 :(得分:1)
要解决您看到gradle assemble
而不是gradle bundleRelease
的原因:
gradle assemble
阶段调用 install:
(有关阶段的说明,请参阅Travis docs,以及this note)。
由于您的脚本没有install:
部分来覆盖默认值,因此Travis正在调用gradle assemble
。
您可以通过添加以下行来防止这种情况,这会告诉Travis在安装阶段不要做任何事情:
install:
- true
我有a similar issue,Travis在我希望执行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 Mahoney为我澄清这一点here。
修改强>
截至2014年5月8日,Travis CI删除了Android测试版的默认install:
阶段,正如here所述。因此,您现在应该可以从脚本中删除install:
阶段,Travis不应该执行gradle assemble
。