Gitlab最近在新版本中将CI集成了进来。有没有更好的方法将Android测试与gitlab-ci集成,以便它可以与Gitlab一起使用?这将非常棒,因为现在您可以在一个服务器上完成所有操作。
谢谢。
谢谢。
我已经设置了Gitlab CI来构建Android项目。这里有一个可以构建Android的容器。尝试在服务器上运行模拟器的回忆实在太痛苦了,所以我宁愿使用Robolectric或类似的东西。您可能需要调整容器以适应您正在构建的Android版本。此设置使用Gradle安装,因为我在设置正确的缓存时遇到了问题。
variables:
LIBRARY: "rxfirebaseandroid"
build:
script:
- gradle testDebug
artifacts:
paths:
- $LIBRARY/build/outputs/aar/
构建和单元测试非常好。这里有一个教程,还包括使用模拟器进行功能测试。对我来说,设置模拟器尚未成功,但其他两个相对较轻松。
下面我发布了 .gitlab-ci.yml,这是我为我的 Android 应用程序效果最佳的配置文件。如果您不需要模拟器,您可能可以删除 before_script 和当然功能测试,留下一个非常简短的配置文件。但是,模拟器是否有效似乎取决于您使用的运行者,因此您可能需要尝试一下。
image: openjdk:8-jdk
variables:
ANDROID_COMPILE_SDK: "25"
ANDROID_BUILD_TOOLS: "25.0.2"
ANDROID_SDK_TOOLS: "25.2.3"
before_script:
- apt-get --quiet update --yes
- apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1 libqt5widgets5
- wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/tools_r${ANDROID_SDK_TOOLS}-linux.zip
- unzip -q android-sdk.zip
- echo y | tools/android --silent update sdk --no-ui --all --filter android-${ANDROID_COMPILE_SDK}
- echo y | tools/android --silent update sdk --no-ui --all --filter platform-tools
- echo y | tools/android --silent update sdk --no-ui --all --filter build-tools-${ANDROID_BUILD_TOOLS}
- echo y | tools/android --silent update sdk --no-ui --all --filter extra-android-m2repository
- echo y | tools/android --silent update sdk --no-ui --all --filter extra-google-google_play_services
- echo y | tools/android --silent update sdk --no-ui --all --filter extra-google-m2repository
- export ANDROID_HOME=$PWD/
- export PATH=$PATH:$PWD//platform-tools/
- chmod +x ./gradlew
stages:
- build
- test
build:
stage: build
script:
- ./gradlew assembleDebug
artifacts:
paths:
- app/build/outputs/
unitTests:
stage: test
script:
- ./gradlew test
functionalTests:
stage: test
script:
- wget --quiet --output-document=android-wait-for-emulator https://raw.githubusercontent.com/travis-ci/travis-cookbooks/0f497eb71291b52a703143c5cd63a217c8766dc9/community-cookbooks/android-sdk/files/default/android-wait-for-emulator
- chmod +x android-wait-for-emulator
- echo y | tools/android --silent update sdk --no-ui --all --filter sys-img-x86-google_apis-${ANDROID_COMPILE_SDK}
- echo no | tools/android create avd -n test -t android-${ANDROID_COMPILE_SDK} --abi google_apis/x86
- tools/emulator64-x86 -avd test -no-window -no-audio &
- ./android-wait-for-emulator
- adb shell input keyevent 82
- ./gradlew cAT