ReleaseEngineering/Contribute: Difference between revisions

Jump to navigation Jump to search
New Releng Contributor Page
No edit summary
(New Releng Contributor Page)
Line 1: Line 1:
This page should help people on how to set themselves up and contribute to Release Engineering.
Mozilla's Release Engineering team is responsible for the project's build, test, and release pipeline. 'Releng' deals with problems at great scale, and there's always room for new contributors!


== Introduction ==
== What is Release Engineering? ==
In release engineering we run different types of jobs for developers and releases.
When a developer makes a change to the source code we create builds and against those builds we run unit tests and performance tests (a.k.a talos jobs).


To tell the different machines what type of job to run we use buildbot which is installed on the master machines. Those master machines tell the different machines (a.k.a. slaves) which jobs to do.
''"Release engineering deals with all activities in between regular development and delivery of a software product to the end user, i.e., integration, build, test execution, packaging and delivery of software"''
<small>From the [http://releng.polymtl.ca/RELENG2014/html/index.html RELENG 2014 Workshop]</small>


To make sure that all of our machines are setup the same way we use puppet and OPSI most places.
[http://youtu.be/7j0NDGJVROI "Release Engineering As A Force Multiplier"] is a talk given by Mozilla's former Director of Release Engineering and is a highly recommended introduction to the field.


We also have to make sure that our machines are staying up by installing nagios.
== Release Engineering at Mozilla ==


If you want to know more you can go to our [[ReleaseEngineering#Documentation|documentation]] page.
Release Engineering at Mozilla is concerned with building Mozilla's release pipeline - the infrastructure that takes the work developers do on our products and delivers it to our customers. This involves being responsible for Mozilla's build and test infrastructure, ie. continuous integration. Release Engineering at Mozilla works to make everybody else to be more efficient and more effective, thus allowing a relatively small organisation like Mozilla to compete with corporate giants and advance Mozilla's mission.
 
On a day-to-day basis, Mozilla's release engineers write Python applications, maintain the pipeline, and configure & wrestle thousands of servers.
 
== Contributing to Releng ==
 
We're always looking for new contributors to help us advance the open web! If you have experience in Python, system administration, or configuration management - or you're looking to learn - we'd love to have you onboard.
 
Mozilla's Release Engineering team is highly remote and distributed, and we live online. Our timezone spread means that there will always be someone online to help you contribute to the open web.
 
=== Getting Started ===
 
==== Tupperware ====


== Using Tupperware ==
The quickest and easiest way to get up and contributing with Release Engineering is by running [[ReleaseEngineering/Tupperware|Tupperware]]
The quickest and easiest way to get up and contributing with Release Engineering is by running [[ReleaseEngineering/Tupperware|Tupperware]]


Line 20: Line 30:
Vagrant is used as a quick and easy way to provision the docker apps and make the setup truly plug n' play. The current setup only has a single Vagrantfile which launches BuildAPI and BuildBot, with their dependency apps RabbitMQ and MySQL.  
Vagrant is used as a quick and easy way to provision the docker apps and make the setup truly plug n' play. The current setup only has a single Vagrantfile which launches BuildAPI and BuildBot, with their dependency apps RabbitMQ and MySQL.  


== Setup a machine to run different jobs ==
=== First Projects ===
To run a build or a test job we setup our machines with tools like python, mercurial and wget.
If you go to the [[ReferencePlatforms#Reference_Platforms|Reference Platforms page]] you can find the steps taken to set each one of our machines up.
The problem right now is that reading the instructions has too much setup work for managing the slaves rather than just getting the jobs to run.


As a way to help people check that their machine can run certain types of jobs we are running [https://github.com/Z001/buildSandBox this experimental project] that gets the packages you need and install it.
==== Mentored Bugs ====


== Run jobs ==
The Mozilla Project has the idea of a 'Good First Bugs' and 'Mentored Bugs'. A 'Good First Bug' is a bug which has been marked as a good first step into the Project and a 'Mentored Bug' is a bug which an experienced contributors has marked as one they will help a new contributor to fix.  
=== How to run a build job ===
Right now this is not easy for you to discover as the steps followed are intertwined inside of our buildbot custom libraries.


At some point we will have some scripts for you to run on mozharness but until then you can reach the build pages and figure it out there.
Mozilla Releng has both! You can see a list of them [http://www.joshmatthews.net/bugsahoy/?releng=1 here]. Don't be discouraged if you don't understand much (or anything!) about the bug, that's completely normal. Just ask for help and you'll be a contributor in no time.


=== How to run a unit test or performance job ===
==== RelengAPI ====
Right now this is not easy for you to discover as the steps followed are intertwined inside of our buildbot custom libraries.


At some point we will have some scripts for you to run on mozharness but until then you can read this [[User:Armenzg:unittest_script|wiki page]].
[https://github.com/mozilla/build-relengapi RelengAPI] is our new interface to Release Engineering services. It's a Flask application, with services registered on it as blueprints. We're aiming for it to be a modern, scalable architecture for the services we provide.


=== How to run an L10n repackage ===
We're building new services on top of it, and porting old ones to the new structure. Porting an existing application could be a great way to gain familiarity with a big chunk of the existing architecture at your own pace.
Right now this is not easy for you to discover as the steps followed are intertwined inside of our buildbot custom libraries.


At some point we will have some scripts for you to run on mozharness but until then you can read this [[User:Armenzg:l10n_scripts|wiki page]].
Plenty of [https://api.pub.build.mozilla.org/docs/ documentation] exists, and there's a [https://github.com/IanConnolly/build-relengapi-template example and template application] available.  


== Buildbot ==
Ask the team how you can help, there's always a bunch to do!
=== Setup a personal development buildbot master ===
You'll want to clone our buildbot-configs (default branch) from here: [http://hg.mozilla.org/build/buildbot-configs/ http://hg.mozilla.org/build/buildbot-configs/]
hg clone http://hg.mozilla.org/build/buildbot-configs


Then follow the instructions here [[ReleaseEngineering/How_To/Setup_Personal_Development_Master|How To Setup a Personal Development Master]] to get set up with a master.
== Further Information ==


You can also create a local instance of a build slave for testing your work, you'll need to install buildbot-slave in your virtualenv
This page is only intended as a starting guide, more information can be found starting from the [[ReleaseEngineering|main Release Engineering page]] or from the sources below.
pip install buildbot-slave


Then create an instance of a buildslave and configure it to connect to the master. You'll want it to match the slave names we use in our configs (test or builder)
=== IRC ===


Come find us in irc.mozilla.org channel: '''#releng''' with your questions, we want you to be able to successfully work on code and submit useful patches so don't be afraid to ask about whatever is blocking you.
Come find us in irc.mozilla.org channel: '''#releng''' with your questions, we want you to be able to successfully work on code and submit useful patches so don't be afraid to ask about whatever is blocking you.
=== Planet Releng ===
To help the team keep in touch with each other and contributors, many members of Mozilla Releng write regular blog posts on what they're doing. You can find an RSS feed of those posts [http://planet.mozilla.org/releng/ here].
Highly recommended is the 'This Week in Releng' series, which is a round-up of what the team have been up to in the past week.
Confirmed users
17

edits

Navigation menu