【发布时间】:2019-05-06 15:09:45
【问题描述】:
为了在任何 jenkins 代理中执行我的测试而不需要任何额外的设置,我想让一切都在 Docker 中运行。
我的第一个方法是使用包含我所需的一切的基础映像,即我的应用程序代码、Android SDK、Flutter、模拟器和模拟器映像。遗憾的是,图像大小超过了 10 GB,所以我决定拆分职责:
我的基础镜像将只包含 Androi sdk。以下图像将从它继承:
图像 1 将让我的应用程序安装有卷和 Flutter,以便构建/测试。
Image 2 将运行模拟器。
这是我设置的 docker-compose:
---
version: '3'
services:
flutter:
build:
args:
- "FLUTTER_CHANNEL=stable"
- "FLUTTER_VERSION=1.2.1"
context: .
dockerfile: DockerfileFlutter
volumes:
- .:/app
working_dir: /app
command: ["flutter", "test"]
emulator:
build:
context: .
dockerfile: DockerfileAndroidEmulator
container_name: "emulator"
privileged: true
extra_hosts:
- "emulator:127.0.0.1"
depends_on:
- flutter
links:
- flutter
command: ["/opt/android-sdk-linux/tools/emulator", "@flutter_emulator", "-no-skin", "-no-audio", "-no-window"]
我面临的问题是我无法使用正在运行的模拟器,因为当我在服务flutter 中执行 adb devices 时,我没有看到在服务emulator 中启动并运行的模拟器.
我尝试通过adb connect 进行连接,但这不起作用。有没有我遗漏的可能解决方案或我做错了什么?
提前致谢。
【问题讨论】:
标签: docker jenkins docker-compose android-emulator adb