问题描述
您好,目前我正在尝试在Gitlab CI中运行Android工具测试,但是在尝试运行模拟器时,我遇到了“模拟器:错误:磁盘空间不足,无法运行AVD'testAVD'。正在退出...”,然后CI流程只会停留在那里。
Gitlab CI结果
$ echo n | android-sdk-linux/tools/bin/avdmanager create avd -f -n testAVD -k "system-images;android-${ANDROID_COMPILE_SDK};google_apis;x86_64"
Loading local repository...
[========= ] 25% Loading local repository...
[========= ] 25% Fetch remote repository...
[========= ] 25% Fetch remote repository...
[========= ] 25% Fetch remote repository...
[=======================================] 100% Fetch remote repository...
Auto-selecting single ABI x86_64
Do you wish to create a custom hardware profile? [no] $ android-sdk-linux/emulator/emulator -avd testAVD -no-audio -no-window &
$ adb wait-for-device
* daemon not running; starting Now at tcp:5037
* daemon started successfully
emulator: ERROR: Not enough disk space to run AVD 'testAVD'. Exiting...
.gitlab-ci.yml
image: openjdk:8-jdk
variables:
ANDROID_COMPILE_SDK: "29"
ANDROID_BUILD_TOOLS: "29.0.3"
ANDROID_SDK_TOOLS: "4333796"
CMAKE: "3.10.2.4988404"
before_script:
- apt-get --quiet update --yes
- apt-get --quiet install --yes wget tar unzip lib32stdc++6 lib32z1
- wget --quiet --output-document=android-sdk.zip https://dl.google.com/android/repository/sdk-tools-linux-${ANDROID_SDK_TOOLS}.zip
- unzip -d android-sdk-linux android-sdk.zip
- echo y | android-sdk-linux/tools/bin/sdkmanager "platforms;android-${ANDROID_COMPILE_SDK}" >/dev/null
- echo y | android-sdk-linux/tools/bin/sdkmanager "platform-tools" >/dev/null
- echo y | android-sdk-linux/tools/bin/sdkmanager "build-tools;${ANDROID_BUILD_TOOLS}" >/dev/null
- echo y | android-sdk-linux/tools/bin/sdkmanager "ndk-bundle" >/dev/null
- echo y | android-sdk-linux/tools/bin/sdkmanager "cmake;${CMAKE}" >/dev/null
- export ANDROID_HOME=$PWD/android-sdk-linux/
- export CMAKE_HOME=$PWD/android-sdk-linux/cmake/${CMAKE}/bin/
- export PATH=$PATH:$PWD/android-sdk-linux/platform-tools/:$CMAKE_HOME
- chmod +x ./gradlew
# temporarily disable checking for EPIPE error and use yes to accept all licenses
- set +o pipefail
- yes | android-sdk-linux/tools/bin/sdkmanager --licenses
- set -o pipefail
stages:
- test
instrumentationTest:
stage: test
script:
- echo y | android-sdk-linux/tools/bin/sdkmanager "emulator" >/dev/null
- echo y | android-sdk-linux/tools/bin/sdkmanager "system-images;android-${ANDROID_COMPILE_SDK};google_apis;x86_64"
- echo n | android-sdk-linux/tools/bin/avdmanager create avd -f -n testAVD -k "system-images;android-${ANDROID_COMPILE_SDK};google_apis;x86_64"
- android-sdk-linux/emulator/emulator -avd testAVD -no-audio -no-window &
- adb wait-for-device
- adb shell input keyevent 82 &
- android list target
- ./gradlew connectedAndroidTest
如何设置Gitlab以运行具有足够磁盘空间的Android仿真器?
解决方法
如何设置Gitlab以运行具有足够磁盘空间的Android仿真器?
如果我们与他们的公共共享运行程序谈论公共gitlab.com存储库,那么根据documentation,我们在运行程序上只有25GB的磁盘空间:
您的所有CI / CD作业都在n1-standard-1个实例上运行,这些实例具有3.75GB的RAM,CoreOS和最新的Docker Engine。实例提供1个vCPU和25GB的HDD磁盘空间。
gitlab-shared-runners-manager-X.gitlab.com
的Runner团队专门用于GitLab项目以及它们的社区分支。他们使用稍大的计算机类型(n1-standard-2),并且具有更大的SSD磁盘大小。
-换句话说,如果您的项目不是官方GitLab-org存储库的分支,则转轮仅具有25gb的空间
增加流道磁盘空间的其他机会是设置自己的流道:
- Install GitLab Runner
- 在Runner安装程序中指定gitlab网址:https://gitlab.com/(或您自定义的gitlab安装主机)
- 转到http://您的存储库->设置-> CI / CD->展开
Runners
部分并获取注册令牌,该令牌将在安装过程中被询问 - 启动亚军
还要注意,您可以在每次操作之后通过输入下一个命令df -h
来调试运行器磁盘的可用空间。像这样:
instrumentationTest:
stage: test
script:
- df -h
- echo y | android-sdk-linux/tools/bin/sdkmanager "emulator" >/dev/null
- df -h
- echo y | android-sdk-linux/tools/bin/sdkmanager "system-images;android-${ANDROID_COMPILE_SDK};google_apis;x86_64"
- df -h
- echo n | android-sdk-linux/tools/bin/avdmanager create avd -f -n testAVD -k "system-images;android-${ANDROID_COMPILE_SDK};google_apis;x86_64"
- df -h
- android-sdk-linux/emulator/emulator -avd testAVD -no-audio -no-window &
- df -h