Difference between revisions of "Mozharness"

From CDOT Wiki
Jump to: navigation, search
(Project Plan)
 
(70 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 
== Project Name ==
 
== Project Name ==
  
ScriptFactory
+
Mozharness
  
 
== Project Description ==
 
== Project Description ==
Line 8: Line 8:
  
 
It would be good if we could create scripts that told a machine how to generate an optimized build, a debug build, unit tests, talos runs, locale repackages.
 
It would be good if we could create scripts that told a machine how to generate an optimized build, a debug build, unit tests, talos runs, locale repackages.
If you look in the [http://hg.mozilla.org/build/tools/file/tip/scripts tools/scripts] repo you can see that we have a simple shell file to do this for the fuzzing automation. The buildbot factory that calls it is called [http://hg.mozilla.org/build/buildbotcustom/file/a70b38b40088/process/factory.py#l7895 ScriptFactory] and it is very simple.
+
If you look in the [http://hg.mozilla.org/build/tools/file/tip/scripts tools/scripts] repo you can see that we have a simple shell file to do this for the fuzzing automation. The buildbot factory that calls it is called [http://hg.mozilla.org/build/buildbotcustom/file/a70b38b40088/process/factory.py#l7895 mozharness] and it is very simple.
  
 +
mozharness is a single factory that buildbot can run; within mozharness, a script is selected for a specific job. This moves the job-definition responsibility out from buildbot; by separating the pieces, you avoid excessive complexity in buildbot and also open up the possibility of running mozharness manually (e.g., by a developer, to test something)
 +
ment
 
Initial contacts: [[User:Armenzg|Armenzg]]
 
Initial contacts: [[User:Armenzg|Armenzg]]
  
 
== Project Leader(s) ==
 
== Project Leader(s) ==
  
In Alphabetical Order:
+
[http://zenit.senecac.on.ca/wiki/index.php/User:Atpruteanu adrianp: Adrian Pruteanu]
  
Adrian Pruteanu [http://zenit.senecac.on.ca/wiki/index.php/User:Atpruteanu]
+
[http://zenit.senecac.on.ca/wiki/index.php/User:Mredha mustafaj: Mustafa Redha]
Mustafa Redha [http://zenit.senecac.on.ca/wiki/index.php/User:Mredha]
 
Jing Yang
 
  
 +
== Project Contributor(s) ==
 +
 +
[[User:Armenzg|Armenzg]]
 +
 +
== Project Details ==
 +
 +
 +
* Objective: Improve efficiency while lowering the entry level knowledge required from new developers to get involved
 +
 +
* http://hg.mozilla.org/users/asasaki_mozilla.com/mozharness
 +
 +
* requirements: pylint and coverage
 +
 +
* ./unit.sh to run unit test coverage
 +
 +
* scripts directory contain scripts
  
== Project Contributor(s) ==
+
* documentation is required
 +
 
 +
* API is changing - WIP in https://bugzilla.mozilla.org/show_bug.cgi?id=574473
 +
 
 +
* scripts written in python
 +
 
 +
* separate framework - which buildbot calls
 +
 +
  '''What are we building?'''
 +
 
 +
* Profile Build
 +
 
 +
* Debug Build - For OS (Mac, Linux, Windows, 32/64 etc)
 +
 
 +
* Packaged Test - contains test for the build
 +
 
 +
* Tests - Mochitests, Reftests, xpcshell, ... 10 in total
 +
** l10n builds
 +
 +
  '''The problem that mozharness solves:'''
  
Name(s) of people casually working on the project, or who have contributed significant help.  Include links to personal pages within wiki
+
* buildbot uses a "factory" to run a job
  
NOTE: only Project Leader(s) should add names here.  You '''can’t''' add your own name to the Contributor list.
+
* there are (becoming) too many different "factories" within buildbot
  
== Project Details ==
 
  
Provides more depth than the Project Description. This is the place for technical discussions, project specs, or other details. If this gets very long, you might consider breaking this part into multiple pages and linking to them.
+
  '''[http://armenzg.blogspot.com/2010/10/releng-contributors-from-seneca.html Outlined in Armen's blog post]'''
  
 
== Project Plan ==
 
== Project Plan ==
  
 
Goals for each release:
 
Goals for each release:
 +
 +
<table style="border: 1px black solid;" cellpadding="3">
 +
<tr>
 +
<th style="width: 50%; border-right: 1px black solid;">
 +
[http://blog.esmnetworks.com/category/mozharness/ adrianp]
 +
- [http://code.darkminds.org/hg/mozharness/rss-log Development Feed]
 +
- [http://code.darkminds.org/hg/mozharness Repository]
 +
</th>
 +
<th>
 +
[http://mustafaredha.wordpress.com/ mustafaj]
 +
</th>
 +
</tr>
 +
<tr>
 +
<td style="vertical-align: top; width: 50%; border-right: 1px black solid;">
 +
<!-- adrianp's projects -->
 +
'''hgtool port'''
 
* 0.1
 
* 0.1
 +
- Create the MercurialVCS class that is responsible for basic hg operations (clone, pull, push) each with an individual method
 
* 0.2
 
* 0.2
 +
- Implement all hgtool actions as individual methods in MercurialVCS. At this point MercurialVCS() should be importable (useful) for Mozharness<br />
 +
- Document usage for programmers (inheritance, import, whatever else not pertaining to users shell interaction)
 +
* 0.3
 +
- lib/source/mercurial.py should be callable via shell with parameters matching each method (ie: ./mercurial.py checkout [src]?)<br />
 +
- The Class should be generalized to ensure portability to other D/VCSs (git, svn, cvs)
 +
<hr />
 +
<br />
 +
</td>
 +
<td style="vertical-align: top;">
 +
<!-- mustafaj's projects -->
 +
 +
<b>0.1 through 0.3 will have a progressive approach.</b>
 +
 +
* 0.1:
 +
 +
**<s>- create mercurial repository: Done</s> -->[http://iraq.proximity.on.ca/hg]<--
 +
<s>** Download builds and tests get them running on Fedora Linux x64.</s>
 +
<s>*** Mochitest and reftest?</s>
 +
<s>** Document the success or problems of these tests (on F13.x64)</s>
 +
<s>** Find out what the meaninfull output will be (These tests run, what are we looking for as a result)</s>
 +
<s>** Scope a specific set of test(s) and options that will be incorporated into moztest.py</s>
 +
<s>** See what logic and scripts can be ported from buildbotcustom to moztest.py</s>
 +
 +
 +
* 0.2
 +
<s>** Create a basic moztest.py which calls classes from the scripts in the harness to take on options and provide a --help list.</s>
 +
** Incorporate the automation of:
 +
***checking the build environment prerequisites
 +
***create an option to bring system up to date for any missing pre-reqs
 +
<s>***download and unpack builds and tests into a standardized directory structure</s>
 +
***run a barebones test
 +
** expand automation to include:
 +
***all options available for the test chosen
 +
<s>***simplify the options for "easy test and build urls"</s>
 +
 +
 
* 0.3
 
* 0.3
 +
<s>**Document 0.1 and 0.2 in an introduction to moztest.py (mozharness)</s> in an inclusive format geared towards developers using the tool and those that may contribute to it in the future
 +
<s>**Continue to expand on moztest.py to address errors</s>
 +
**TBD midway through 0.3
 +
</td>
 +
</tr>
 +
</table>
 +
 +
== Project News==
 +
 +
*Friday October 8, 2010:
 +
**I will try to contact Armen today and find out what his schedule is like, and coordinate with everybody to setup a meeting in CDOT conference room.  -Mustafa
 +
 +
*Tuesday October 12, 2010:
 +
**Adrian made initial Contact with Armen, meeting set for 3pm Wendesday October 13, 2010  -Mustafa
 +
 +
*Wednesday October 13, 2010:
 +
**The mozharness/buildapi/releasebugs group met today with Armen and Ctyler in a conference call.  The conference call is logged below -Mustafa
 +
 +
'''First meeting: mozharness call (2010-10-12 15:00 EDT)'''
 +
 +
# What is mozharness (Armen)
 +
# Initial direction
 +
# Q&A
 +
 +
'''Atendees:'''
 +
 +
* ctyler, mustafaj, armenzg, adrianp, asingh
  
== Project News ==
+
'''Blogs:'''
  
This is where your regular updates will go. In these you should discuss the status or your work, your interactions with other members of the community (e.g., Seneca and Mozilla), problems you have encountered, etc.
+
* Armen: http://armenzg.blogspot.com/
 +
* Mustafa: http://mustafaredha.wordpress.com/
 +
* adrianp: http://blog.esmnetworks.com/
  
Put detailed technical information into the Project Details page (i.e., update it as you go), and save this section for news about participation in the project.
+
... all of which appear on the [http://zenit.senecac.on.ca/~chris.tyler/planet/ CDOT Planet]

Latest revision as of 04:57, 18 December 2010

Project Name

Mozharness

Project Description

Imagine that we did not have to touch the Mozilla buildbot factories but instead we maintained a bunch of script for all the different jobs they run?

It would be good if we could create scripts that told a machine how to generate an optimized build, a debug build, unit tests, talos runs, locale repackages. If you look in the tools/scripts repo you can see that we have a simple shell file to do this for the fuzzing automation. The buildbot factory that calls it is called mozharness and it is very simple.

mozharness is a single factory that buildbot can run; within mozharness, a script is selected for a specific job. This moves the job-definition responsibility out from buildbot; by separating the pieces, you avoid excessive complexity in buildbot and also open up the possibility of running mozharness manually (e.g., by a developer, to test something) ment Initial contacts: Armenzg

Project Leader(s)

adrianp: Adrian Pruteanu

mustafaj: Mustafa Redha

Project Contributor(s)

Armenzg

Project Details

  • Objective: Improve efficiency while lowering the entry level knowledge required from new developers to get involved
  • requirements: pylint and coverage
  • ./unit.sh to run unit test coverage
  • scripts directory contain scripts
  • documentation is required
  • scripts written in python
  • separate framework - which buildbot calls
 What are we building?
  • Profile Build
  • Debug Build - For OS (Mac, Linux, Windows, 32/64 etc)
  • Packaged Test - contains test for the build
  • Tests - Mochitests, Reftests, xpcshell, ... 10 in total
    • l10n builds
  The problem that mozharness solves:
  • buildbot uses a "factory" to run a job
  • there are (becoming) too many different "factories" within buildbot


 Outlined in Armen's blog post

Project Plan

Goals for each release:

adrianp - Development Feed - Repository

mustafaj

hgtool port
  • 0.1

- Create the MercurialVCS class that is responsible for basic hg operations (clone, pull, push) each with an individual method

  • 0.2

- Implement all hgtool actions as individual methods in MercurialVCS. At this point MercurialVCS() should be importable (useful) for Mozharness
- Document usage for programmers (inheritance, import, whatever else not pertaining to users shell interaction)

  • 0.3

- lib/source/mercurial.py should be callable via shell with parameters matching each method (ie: ./mercurial.py checkout [src]?)
- The Class should be generalized to ensure portability to other D/VCSs (git, svn, cvs)



0.1 through 0.3 will have a progressive approach.

  • 0.1:
    • - create mercurial repository: Done -->[1]<--

** Download builds and tests get them running on Fedora Linux x64. *** Mochitest and reftest? ** Document the success or problems of these tests (on F13.x64) ** Find out what the meaninfull output will be (These tests run, what are we looking for as a result) ** Scope a specific set of test(s) and options that will be incorporated into moztest.py ** See what logic and scripts can be ported from buildbotcustom to moztest.py


  • 0.2

** Create a basic moztest.py which calls classes from the scripts in the harness to take on options and provide a --help list.

    • Incorporate the automation of:
      • checking the build environment prerequisites
      • create an option to bring system up to date for any missing pre-reqs

***download and unpack builds and tests into a standardized directory structure

      • run a barebones test
    • expand automation to include:
      • all options available for the test chosen

***simplify the options for "easy test and build urls"


  • 0.3

**Document 0.1 and 0.2 in an introduction to moztest.py (mozharness) in an inclusive format geared towards developers using the tool and those that may contribute to it in the future **Continue to expand on moztest.py to address errors

    • TBD midway through 0.3

Project News

  • Friday October 8, 2010:
    • I will try to contact Armen today and find out what his schedule is like, and coordinate with everybody to setup a meeting in CDOT conference room. -Mustafa
  • Tuesday October 12, 2010:
    • Adrian made initial Contact with Armen, meeting set for 3pm Wendesday October 13, 2010 -Mustafa
  • Wednesday October 13, 2010:
    • The mozharness/buildapi/releasebugs group met today with Armen and Ctyler in a conference call. The conference call is logged below -Mustafa

First meeting: mozharness call (2010-10-12 15:00 EDT)

  1. What is mozharness (Armen)
  2. Initial direction
  3. Q&A

Atendees:

  • ctyler, mustafaj, armenzg, adrianp, asingh

Blogs:

... all of which appear on the CDOT Planet