ReleaseEngineering/Platforms/Android: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
No edit summary
Line 1: Line 1:
Mozilla release a version of Firefox for [[Mobile/Platforms/Android Android]].
= Introduction =
Mozilla's Release Engineering has continuous integration to support such initiative.
Mozilla releases a version of Firefox for [[Mobile/Platforms/Android Android]].
This page explains what is involved on all the pieces related to it.
Mozilla's Release Engineering team support this initiative with continuous integration systems.
This page explains what is involved on all the pieces related to these systems.


= Building =
Currently, we build on EC2 instances (bld-linux64-ec2-XXX machines) and in-house machines (bld-linux64-ix-XXX machines).
We build on EC2 instances (bld-linux64-ec2-XXX machines).
We create builds for three different architectures: armv6, armv7 and x86.
We create builds for three different architectures: armv6, armv7 and x86.
We run unit tests and performance test differently on each build.


== Android Armv7 ==
= Builds & tests =
== Armv6 ==
More info needed as to how we build this.
 
=== Android 2.2 ===
Jobs: '''unit tests''' tests <br />
Setup configuration: Foopies-board setup and fixed allocation (no mozpool).<br />
Hosts: Tegra boards (tegra-XXX) <br />
Scripts: [http://hg.mozilla.org/build/buildbotcustom/file/default/process/factory.py factory.py] <br />
Configs: [http://hg.mozilla.org/build/mozharness/file/default/configs/android/android_panda_releng.py android_panda_releng.py] and [http://hg.mozilla.org/build/mozharness/file/default/configs/androidandroid_panda_talos_releng.py android_panda_talos_releng.py]<br />
Artifacts: SUT agent, watcher
 
== Armv7 ==
For this architecture we build both '''optimized''' and '''debug''' builds.
For this architecture we build both '''optimized''' and '''debug''' builds.
NOTE: We don't yet run tests on the debug builds.
NOTE: We don't yet run tests on the debug builds.


More info needed as to how we run this.
More info needed as to how we build this.


== Android Armv6 ==
=== Android 2.2 ===
More info needed as to how we run this.
Jobs: '''unit tests''' tests <br />
Setup configuration: Foopies-board setup and fixed allocation (no mozpool).<br />
Hosts: Tegra boards (tegra-XXX) <br />
Scripts: [http://hg.mozilla.org/build/buildbotcustom/file/default/process/factory.py factory.py] <br />
Configs: [http://hg.mozilla.org/build/mozharness/file/default/configs/android/android_panda_releng.py android_panda_releng.py] and [http://hg.mozilla.org/build/mozharness/file/default/configs/androidandroid_panda_talos_releng.py android_panda_talos_releng.py]<br />
Artifacts: SUT agent, watcher


== Android x86 ==
=== Android 2.3 ===
More info needed as to how we run this.
This is still WIP.
 
= Testing =
We run unit tests and performance tests on Firefox for Android files on these different configurations:


== Android 2.2 Armv6 ==
Jobs: '''unit tests''' tests <br />
We run '''unit tests''' and '''performance''' tests on Tegra development boards.
Setup configuration: Emulator parralellization <br />
NOTE: Tegra boards are armv7, however, we can run armv6 builds on it.
Hosts: EC2 Ubuntu 64-bit instances (tst-linux64-spot-XXX or tst-linux64-ec2-XXX). <br />
Scripts: [http://hg.mozilla.org/build/mozharness/file/default/scripts/android_emulator_unittest.py android_emulator_unittest.py]<br/>
Configs: [http://hg.mozilla.org/build/mozharness/file/default/configs/android/androidarm.py androidarm.py]<br />
Artifacts: SUT agent, watcher, Android emulator, Android SDK, AVD definitions


== Android 2.3 on EC2 ==
=== Android 4.0 ===
This is still WIP.
Jobs: '''unit tests''' and '''performance'' tests <br />
Setup configuration: Foopies-board setup and fixed allocation (no mozpool) <br />
Hosts: [http://pandaboard.org/node/300/#PandaES PandaES] development boards.<br />
Scripts: [http://hg.mozilla.org/build/mozharness/file/default/scripts/android_panda.py android_panda.py] & [http://hg.mozilla.org/build/mozharness/file/default/scripts/android_panda_talos.py android_panda_talos.py] <br />
Configs: [http://hg.mozilla.org/build/mozharness/file/default/configs/android/android_panda_releng.py android_panda_releng.py] and [http://hg.mozilla.org/build/mozharness/file/default/configs/androidandroid_panda_talos_releng.py android_panda_talos_releng.py]<br />
Artifacts: SUT agent, watcher


We want to run Android 2.3 '''unit tests''' on EC2 Ubuntu 64-bit instances (tst-linux64-spot-XXX or tst-linux64-ec2-XXX).
== x86 ==
We have written [[https://wiki.mozilla.org/ReleaseEngineering/Mozharness|Mozharness] code to start up four Android emulators on these hosts and run on each emulator a different test suite. This means that we can run up to four different test jobs on the same host cutting the load on the pool.
More info needed as to how we build this.
Each emulator starts up with a specific avd definition that already has the SUT agent and Watcher (TODO add link to docs).
These AVD definitions are stored on a tar ball which we store on tooltool (TODO add link to docs), which we download to the host if it is not already cached and untar on every job to have a clean state for the emulators to start from.
TODO: explain what AVD definitions are.
We deploy the Android SDK 18 (TODO add link) with puppet (TODO add link) before the machine starts a job.
TODO finish this up


=== Deployment of artifacts ===
=== Android 4.2 ===
* TODO: Link to how to deploy a new version of the Android SDK
Jobs: '''unit tests''' <br />
* [[ReleaseEngineering:Buildduty:Other_Duties#How_to_upload_to_Tooltool|How to upload a new AVD definition to ToolTool]]
Setup configuration: Emulator parralellization <br />
Hosts: In-house Ubuntu 64-bit hosts (talos-linux64-ix-XXX). <br />
Scripts: [http://hg.mozilla.org/build/mozharness/file/default/scripts/android_emulator_unittest.py android_emulator_unittest.py]<br/>
Configs: [http://hg.mozilla.org/build/mozharness/file/default/configs/android/androidarm.py androidarm.py]
Artifacts: SUT agent, watcher, Android emulator, Android SDK, AVD definitions


=== How to build the emulator ===
= Testing setup configurations =
TODO: add info
All of our Mobile testing is driven by [[ReleaseEngineering/Mozharness|Mozharness]] code to the exception of Tegras, which run code from  [http://hg.mozilla.org/build/buildbotcustom/file/default/process/factory.py factory.py] <br />


=== How to generate patched Android SDK ===
== Foopy-Board setup ==
TODO: add info
TODO: document


=== How to generate the AVD definitions ===
== Mozpool allocation ==
TODO: add info
Mozharness uses [https://pypi.python.org/pypi/mozpoolclient MozpoolClient] to talk to the [[ReleaseEngineering/Mozpool|Mozpool]] server stack which IT wrote to manage & allocate the Panda boards.


== Android 4.0 Armv7 ==
== Emulator parallelization ==
We run '''unit tests''' and '''performance''' tests on [http://pandaboard.org/node/300/#PandaES PandaES] development boards.<br />
For the Android 2.3 and Android x86 jobs we're using emulator and use multiple ones at a time.
We use [[https://wiki.mozilla.org/ReleaseEngineering/Mozharness|Mozharness]] to run the various jobs. Mozharness uses [https://pypi.python.org/pypi/mozpoolclient MozpoolClient] to talk to the [[ReleaseEngineering/Mozpool|Mozpool]] server stack which IT wrote to manage the boards.
Mozharness starts up four Android emulators run on each emulator a different test suite.
This means that we can run up to four different test jobs on the same host cutting the load on the pool.


== Android 4.2 x86 ==
Each emulator starts up with a specific AVD definition that already has the SUT agent and Watcher installed.
We run '''unit tests''' and '''performance''' tests on in-house Ubuntu 64-bit hosts (talos-linux64-ix-XXX).
These AVD definitions are stored on a tar ball, which we store on ToolTool, which we download to the host if
We have written [[https://wiki.mozilla.org/ReleaseEngineering/Mozharness|Mozharness] code to start up four Android emulators on these hosts and run on each one a different test suites. This means that we can run up to four different test jobs on the same host cutting the load on the pool.
it is not already cached. We untar it on *every* job to have a clean state for the emulators to start from.
Each emulator starts up with a specific avd definition that already has the SUT agent and Watcher (TODO add link to docs).
These AVD definitions are stored on a tar ball which we store on tooltool (TODO add link to docs), which we download to the host if it is not already cached and untar on every job to have a clean state for the emulators to start from.
TODO: explain what AVD definitions are.
TODO: explain what AVD definitions are.
We deploy the Android SDK 18 (TODO add link) with puppet (TODO add link) before the machine starts a job.
We deploy the Android SDK 18 (TODO add link) with puppet (TODO add link) before the machine starts a job.
TODO finish this up
TODO: finish this u


=== Deployment of artifacts ===
= Artifacts =
== Android emulator ==
=== How to build the emulator ===
TODO: add info
== AVD definition ==
=== How to generate the AVD definitions ===
TODO: add info
== Android SDK ==
=== How to generate patched Android SDK ===
TODO: add info
== Deployment of artifacts ==
* TODO: Link to how to deploy a new version of the Android SDK
* TODO: Link to how to deploy a new version of the Android SDK
* [[ReleaseEngineering:Buildduty:Other_Duties#How_to_upload_to_Tooltool|How to upload a new AVD definition to ToolTool]]
* [[ReleaseEngineering:Buildduty:Other_Duties#How_to_upload_to_Tooltool|How to upload a new AVD definition to ToolTool]]


=== How to generate patched Android SDK ===
= Hosts involved =
TODO: add info
TODO: This section should be a page of its own.


=== How to generate the AVD definitions ===
== Mozpool ==
TODO: add info
TODO: add info


= Hosts involved =
== Tegra mobile boards ==
XXX: This section should be a page of its own.
NOTE: Tegra boards are armv7, however, we can run armv6 builds on it.


== Tegra mobile boards ==
These are mobile development boards which are named following this format: tegra-XXX.
These are mobile development boards which are named following this format: tegra-XXX.
These boards currently have installed Android 2.2.
These boards currently have installed Android 2.2.
Line 93: Line 123:
More info needed. Add specs.
More info needed. Add specs.


== Linux 64-bit in-house test hosts ==
== Ubuntu 64-bit in-house test hosts ==
More info needed. Add specs.
More info needed. Add specs.
These hosts live on scl3, they are made by iX systems, we started buying them on 2013 and they have external graphic cards installed.
These hosts live on scl3, they are made by iX systems, we started buying them on 2013 and they have external graphic cards installed.
== Ubuntu 64-bit EC2 test hosts ==
More info needed.

Revision as of 17:04, 21 January 2014

Introduction

Mozilla releases a version of Firefox for Mobile/Platforms/Android Android. Mozilla's Release Engineering team support this initiative with continuous integration systems. This page explains what is involved on all the pieces related to these systems.

Currently, we build on EC2 instances (bld-linux64-ec2-XXX machines) and in-house machines (bld-linux64-ix-XXX machines). We create builds for three different architectures: armv6, armv7 and x86. We run unit tests and performance test differently on each build.

Builds & tests

Armv6

More info needed as to how we build this.

Android 2.2

Jobs: unit tests tests
Setup configuration: Foopies-board setup and fixed allocation (no mozpool).
Hosts: Tegra boards (tegra-XXX)
Scripts: factory.py
Configs: android_panda_releng.py and android_panda_talos_releng.py
Artifacts: SUT agent, watcher

Armv7

For this architecture we build both optimized and debug builds. NOTE: We don't yet run tests on the debug builds.

More info needed as to how we build this.

Android 2.2

Jobs: unit tests tests
Setup configuration: Foopies-board setup and fixed allocation (no mozpool).
Hosts: Tegra boards (tegra-XXX)
Scripts: factory.py
Configs: android_panda_releng.py and android_panda_talos_releng.py
Artifacts: SUT agent, watcher

Android 2.3

This is still WIP.

Jobs: unit tests tests
Setup configuration: Emulator parralellization
Hosts: EC2 Ubuntu 64-bit instances (tst-linux64-spot-XXX or tst-linux64-ec2-XXX).
Scripts: android_emulator_unittest.py
Configs: androidarm.py
Artifacts: SUT agent, watcher, Android emulator, Android SDK, AVD definitions

Android 4.0

Jobs: unit tests' and performance tests
Setup configuration: Foopies-board setup and fixed allocation (no mozpool)
Hosts: PandaES development boards.
Scripts: android_panda.py & android_panda_talos.py
Configs: android_panda_releng.py and android_panda_talos_releng.py
Artifacts: SUT agent, watcher

x86

More info needed as to how we build this.

Android 4.2

Jobs: unit tests
Setup configuration: Emulator parralellization
Hosts: In-house Ubuntu 64-bit hosts (talos-linux64-ix-XXX).
Scripts: android_emulator_unittest.py
Configs: androidarm.py Artifacts: SUT agent, watcher, Android emulator, Android SDK, AVD definitions

Testing setup configurations

All of our Mobile testing is driven by Mozharness code to the exception of Tegras, which run code from factory.py

Foopy-Board setup

TODO: document

Mozpool allocation

Mozharness uses MozpoolClient to talk to the Mozpool server stack which IT wrote to manage & allocate the Panda boards.

Emulator parallelization

For the Android 2.3 and Android x86 jobs we're using emulator and use multiple ones at a time. Mozharness starts up four Android emulators run on each emulator a different test suite. This means that we can run up to four different test jobs on the same host cutting the load on the pool.

Each emulator starts up with a specific AVD definition that already has the SUT agent and Watcher installed. These AVD definitions are stored on a tar ball, which we store on ToolTool, which we download to the host if it is not already cached. We untar it on *every* job to have a clean state for the emulators to start from. TODO: explain what AVD definitions are. We deploy the Android SDK 18 (TODO add link) with puppet (TODO add link) before the machine starts a job. TODO: finish this u

Artifacts

Android emulator

How to build the emulator

TODO: add info

AVD definition

How to generate the AVD definitions

TODO: add info

Android SDK

How to generate patched Android SDK

TODO: add info

Deployment of artifacts

Hosts involved

TODO: This section should be a page of its own.

Mozpool

TODO: add info

Tegra mobile boards

NOTE: Tegra boards are armv7, however, we can run armv6 builds on it.

These are mobile development boards which are named following this format: tegra-XXX. These boards currently have installed Android 2.2. These boards are located at various locations at the Mountain View office and will be moved to the new Mountain View office. The will be supported until the end of The Tegra boards are driven by Linux hosts called Foopies (TODO link to docs) which run multiple buildbot slave instances (TODO link to docs) named after the tegra boards. More info needed. Add specs.

Panda mobile boards

These are mobile development boards which are named following this format: panda-XXXX. These boards currently have installed Android 4.0. The Panda boards are driven by Linux hosts called Foopies (TODO link to docs) which run multiple buildbot slave instances (TODO link to docs) named after the panda boards. More info needed. Add specs.

Foopies

More info needed. Add specs.

Ubuntu 64-bit in-house test hosts

More info needed. Add specs. These hosts live on scl3, they are made by iX systems, we started buying them on 2013 and they have external graphic cards installed.

Ubuntu 64-bit EC2 test hosts

More info needed.