ReleaseEngineering/Funsize: Difference between revisions

Jump to navigation Jump to search
no edit summary
No edit summary
Line 3: Line 3:
[https://github.com/mozilla/build-funsize Funsize] can be defined as a "Partial MAR on demand" web service. It's supposed to be an isolated service that generates [[User:NThomas:Mar_Generation | Partial MARs]] to transition from Version A to Version B of Firefox.
[https://github.com/mozilla/build-funsize Funsize] can be defined as a "Partial MAR on demand" web service. It's supposed to be an isolated service that generates [[User:NThomas:Mar_Generation | Partial MARs]] to transition from Version A to Version B of Firefox.


= Working with Funsize =
Funsize can be split into 2 logical parts: scheduler and tasks.


== Using the API ==
[https://github.com/mozilla/funsize/blob/master/funsize/scheduler.py The scheduler] listens for [https://wiki.mozilla.org/Auto-tools/Projects/Pulse Pulse] events and schedules tasks for nightly builds. The scheduler is managed by Releng and multihomed on several machines in SCL3.


Funsize has a straightforward API that any client wishing to use this service can leverage. You can find the details of the API documentation on the [[/API|Using Funsize]] page.
The tasks, such as [https://github.com/mozilla/funsize/tree/master/docker/funsize-update-generator update generator], [https://github.com/mozilla/funsize/tree/master/docker/funsize-balrog-submitter Balrog submitter], and [https://github.com/mozilla/signingworker signing worker] do the actual work.


= Working with Funsize =
== Development ==
== Development ==
See [https://github.com/mozilla/funsize/blob/master/CONTRIBUTING.rst CONTRIBUTING] on how to contribute to the project.


Funsize is first and foremost a Python application so it tries to follow [http://legacy.python.org/dev/peps/pep-0008/ PEP 8] wherever possible.
Funsize is first and foremost a Python application so it tries to follow [http://legacy.python.org/dev/peps/pep-0008/ PEP 8] wherever possible.
Line 18: Line 20:


== Deployment ==
== Deployment ==
 
Deployment is managed by [http://hg.mozilla.org/build/puppet/file/default/modules/funsize_scheduler puppet].
Deployment for Funsize is a little up in the air at the moment, but the current way to deploy in production is to deploy on Amazon Elastic Beanstalk with docker containers.
 
If you're dealing with an existing deploy look at the [[/Troubleshooting | Funsize Troubleshooting]] page for details on how to work with such a deploy and how to troubleshoot an existing deploy.


= Roadmap =
= Roadmap =
See {{bug|1149142|Funsize tracking bug}} for blocking bugs


Goals in order of priority:
Goals in order of priority:
 
* Add support for release partials
'''High Priority'''
* Add S3 cache support
 
* Fixing our umask/other settings so that checksums on different MARs match exactly.
* Integrate into the build process so that the build process uses funsize to generate partials instead of whatever it does now.
* Setup development, staging and production for the funsize
* Integration with AWS, so that we can scale up and down easily.
** Add S3 cache support
** Add RDS support
** Add SQS support (celery has experimental SQS support)
** Possibile approaches are:
*** Setup all the services we need on a single EC2 instance (MySQL, AMQP, FTP Cache?)
*** Use all the existing Amazon services instead.
** Add configuration
* Get file level diff caching with the service.
** Complete python module
** integrate python module into funsize
** add diff level caching to python module
 
'''Enhancements'''
 
* Keep local dev and production as close to each other as possible.
* Add supervisord support to containers
* Have logs uploaded to someplace on S3
* Get update verifiction tests up and running
* Get safety net of watershed logic
* Use vagrant to setup and link multiple containers (see tupperware, it has great examples)
 
Link to open bugs: https://bugzilla.mozilla.org/buglist.cgi?quicksearch=funsize&list_id=10882670


= Other Notes =
= Other Notes =
Confirmed users
3,104

edits

Navigation menu