将Android(或Gradle)与Gitlab CI集成

将Android(或Gradle)与Gitlab CI集成,android,continuous-integration,gitlab,gitlab-ci,Android,Continuous Integration,Gitlab,Gitlab Ci,Gitlab最近已经将CI集成到新版本中。有没有更好的方法将android测试与gitlab ci集成,以便它与gitlab协同工作?考虑到您现在可以在一台服务器上完成所有操作,这将是非常棒的 谢谢我已经设置了Gitlab CI来构建android项目。尝试在服务器上运行模拟器的记忆太痛苦了,所以我还是坚持使用Robolectric或类似的东西。您可能需要调整容器以适应您正在构建的android版本。此设置使用gradle安装,因为我无法设置正确的缓存 variables: LIBRARY:

Gitlab最近已经将CI集成到新版本中。有没有更好的方法将android测试与gitlab ci集成,以便它与gitlab协同工作?考虑到您现在可以在一台服务器上完成所有操作,这将是非常棒的


谢谢

我已经设置了Gitlab CI来构建android项目。尝试在服务器上运行模拟器的记忆太痛苦了,所以我还是坚持使用Robolectric或类似的东西。您可能需要调整容器以适应您正在构建的android版本。此设置使用gradle安装,因为我无法设置正确的缓存

variables:
  LIBRARY: "rxfirebaseandroid"

build:
  script:
    - gradle testDebug
  artifacts:
    paths:
      - $LIBRARY/build/outputs/aar/

构建和单元测试工作得很好。本教程还包括使用仿真器的功能测试。对我来说,设置仿真器还没有起作用,但其他两个相对来说都没有痛苦

下面我发布了.gitlab-ci.yml,它最适合我的android应用程序。如果您不需要模拟器,您可能会删除before_脚本,当然还有功能测试,剩下的配置文件很短。但是仿真器是否工作似乎取决于您使用的模拟器,因此您可能想尝试一下

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