Auto-tools/Projects/Mozharness
In the A-team we have recently been focusing on making mozharness easier to use by developers and give more flexibility in its use. Mozharness was originally started with Release Engineering and the A-team has been able to use it to contribute on the side of test jobs.
Some of the changes agreed to be tackled over the next couple of quarters are defined in Mozharness changes. We will migrate that page into here.
Introduction
This projects' goal
Every work day at Mozilla we run almost a 100,000 jobs a day and most are through mozharness. You can see some of them in here.
Mozharness is mainly developed by Release Engineering (Mozharness). This lines up well with the A-team's mission. This specific page project is making Mozharness easier for developers.
If you want to understand more about mozharness read this page.
Browsing the code
You can use dxr to browse Mozharness's code. You can also use mxr to search repositories that are involved with mozharness.
Filing bugs
If you find any issues running mozharness locally, please let us know by filing a bug. Please attach logs/log_raw.log to the bug it will help us see what you're facing.
Getting help
Join our IRC channel or ask questions in Google group (alternatively you can join the mirroring list).
If you're familiar with mozharness get your name in here so people can reach out to your on IRC:
- armenzg - Helping out remove rough edges for developers
- jlund - One of the main contributors
- catlee - Long time contribuor
- ahal - Long time contribuor
- gbrown - - Long time contribuor - Familiar with Android scripts
Setup
Using mozharness is very easy. Here's what it takes to run it:
hg clone http://hg.mozilla.org/build/mozharness cd mozharness
Check the "examples" section for seeing how to run mozharness locally.
NOTE: For some test jobs you will need LDAP credentials. This might limit the ability of community members to try those type of jobs.
Prerequisites
You need to have:
- Mercurial
- virtualenv
For Windows users you can get all this by installing MozillaBuild.
Examples
The following are some examples of test jobs that you can run locally: - Run a Firefox desktop reftest
- On Linux:
python scripts/desktop_unittest.py --cfg unittests/linux_unittest.py --reftest reftest \ --installer-url ftp://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/firefox-35.0a1.en-US.linux-x86_64.tar.bz2 \ --test-url ftp://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/firefox-35.0a1.en-US.linux-x86_64.tests.zip \ --cfg developer_config.py
- On Windows:
python scripts/desktop_unittest.py --cfg unittests/win_unittest.py --reftest-suite reftest \ --installer-url ftp://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/firefox-35.0a1.en-US.win32.zip \ --test-url ftp://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-trunk/7/firefox-35.0a1.en-US.win32.tests.zip \ --cfg developer_config.py
- Run a Firefox for Android reftest:
python scripts/android_emulator_unittest.py --cfg android/androidarm.py --test-suite reftest-1 \ --installer-url ftp://ftp.mozilla.org/pub/mozilla.org/mobile/nightly/latest-mozilla-central-android/fennec-35.0a1.en-US.android-arm.apk \ --test-url ftp://ftp.mozilla.org/pub/mozilla.org/mobile/nightly/latest-mozilla-central-android//fennec-35.0a1.en-US.android-arm.tests.zip \ --cfg developer_config.py
- Run a Firefox OS emulator reftest job (NOTE: You will need LDAP credentials):
python scripts/b2g_emulator_unittest.py --cfg b2g/emulator_automation_config.py --test-suite reftest --this-chunk 1 --total-chunks 20 \ --installer-url http://pvtbuilds.pvt.build.mozilla.org/pub/mozilla.org/b2g/tinderbox-builds/mozilla-central-emulator/20141001060621/emulator.tar.gz \ --test-url http://pvtbuilds.pvt.build.mozilla.org/pub/mozilla.org/b2g/tinderbox-builds/mozilla-central-emulator/20141001060621/b2g-35.0a1.en-US.android-arm.tests.zip \ --cfg developer_config.py
If you want to learn a bit more about different ways we can run jobs running in tbpl.mozilla.org locally, follow this article: "How to run Mozharness as a developer".
Testing your mozharness changes
You can try your changes locally and then ask for review in the bug.
Unit tests
You can run ./unit.sh to ensure that you pass all unit tests.
Testing live Mozharness patches can be tested on the TryServer if you have commit access and a user repo. You can read this and ask for information on how to get the required privileges to do so. Meanwhile, your mentor can help you test the changes for you.
Submitting your patches for review
You can do so by:
- Create a patch by running "hg diff > my_patch.diff"
- Click on "Add an attachment" and attach the file
- Add a description on how this works and known issues
- Change the feedback dropbox to "?" and enter the email address of the person will check your code
- That person will receive an email notification and should be getting back to you in the next day or so
Where can I help?
In order to make mozharness easier for developers we have to make it a delightful and well integrated experience. If you want to help, you can find the list of bugs needed to accomplish listed by difficulty.
Good first easier-mozharness bugs
Link to the list of bugs.
These are good starting bugs:
No results.
0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);
Good first bugs
There are also bugs not specific to making mozharness easier, however, they also help release engineering's load.
This is a super set of the previous section.
Link to the list of bugs.
These are good starting bugs:
No results.
0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);
Good next bugs
Link to the list of bugs.
If the good first bugs are depleted or want to try something a bit more complicated (NOTE: these bugs might be a bit more challenging):
No results.
0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);
All easier-mozharness bugs
Link to the list of bugs.
These bugs are likely to only require a bit of mozharness hacking and a lot of other code repositories.
No results.
0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);
Completed bugs
No results.
0 Total; 0 Open (0%); 0 Resolved (0%); 0 Verified (0%);