Labs/Jetpack/FlightDeck/Contribution: Difference between revisions

From MozillaWiki
< Labs‎ | Jetpack‎ | FlightDeck
Jump to navigation Jump to search
No edit summary
Line 50: Line 50:
  mkvirtualenv --no-site-packages flightdeck
  mkvirtualenv --no-site-packages flightdeck


=== Install repository ===
=== Install repository ===
 
'''Clone'''


'''Clone'''
  git clone https://github.com/{your_github_username}/FlightDeck.git
  git clone https://github.com/{your_github_username}/FlightDeck.git
  git remote add main https://github.com/mozilla/FlightDeck.git
  git remote add main https://github.com/mozilla/FlightDeck.git
  git submodule update --init
  git submodule update --init


'''Install required software to virtual environment'''
'''Install required software to virtual environment'''  
 
  pip install simplejson
  pip install simplejson
  pip install mysql-python
  pip install mysql-python
Line 63: Line 65:
  pip install -r requirements/development.txt
  pip install -r requirements/development.txt
   
   
'''Configure your local settings'''


Copy contents of [http://pastebin.mozilla.org/1020384 that file] to ./settings_local.py, change the password to the database.
'''Configure your local settings'''
 
Copy contents of [http://pastebin.mozilla.org/1020384 that file] to ./settings_local.py, change the password to the database.  


'''Test the configuration'''
'''Test the configuration'''  


  ./manage.py test
  ./manage.py test


The result should look similar to this one:
The result should look similar to this one:  


  16:23:1296778995 nose.plugins.manager:DEBUG DefaultPluginManager load plugin figleaf-sections = figleaf.nose_sections:FigleafSections :/home/zalun/Projects/FlightDeck/vendor/lib/python/nose/plugins/manager.py:359
  16:23:1296778995 nose.plugins.manager:DEBUG DefaultPluginManager load plugin figleaf-sections = figleaf.nose_sections:FigleafSections&nbsp;:/home/zalun/Projects/FlightDeck/vendor/lib/python/nose/plugins/manager.py:359
  nosetests --verbosity 1
  nosetests --verbosity 1
  16:23:1296778995 nose.plugins.manager:DEBUG DefaultPluginManager load plugin figleaf-sections = figleaf.nose_sections:FigleafSections :/home/zalun/Projects/FlightDeck/vendor/lib/python/nose/plugins/manager.py:359
  16:23:1296778995 nose.plugins.manager:DEBUG DefaultPluginManager load plugin figleaf-sections = figleaf.nose_sections:FigleafSections&nbsp;:/home/zalun/Projects/FlightDeck/vendor/lib/python/nose/plugins/manager.py:359
  Creating test database 'default'...
  Creating test database 'default'...
  ...Skipping setup of test_flightdeck!
  ...Skipping setup of test_flightdeck!
  ...Try FORCE_DB=true if you need fresh databases.
  ...Try FORCE_DB=true if you need fresh databases.
  No fixtures found.
  No fixtures found.
  ....................S.....................16:24:1296779079 f.jetpack:ERROR Path not found: None, package: 1000001. :/home/zalun/Projects/FlightDeck/apps/jetpack/views.py:490
  ....................S.....................16:24:1296779079 f.jetpack:ERROR Path not found: None, package: 1000001.&nbsp;:/home/zalun/Projects/FlightDeck/apps/jetpack/views.py:490
  ..S..............16:25:1296779107 f.xpi_utils:INFO Created: /tmp/AtFYdVQ2At.xpi :/home/zalun/Projects/FlightDeck/apps/xpi/xpi_utils.py:50
  ..S..............16:25:1296779107 f.xpi_utils:INFO Created: /tmp/AtFYdVQ2At.xpi&nbsp;:/home/zalun/Projects/FlightDeck/apps/xpi/xpi_utils.py:50
  ....16:25:1296779115 f.xpi_utils:INFO Created: /tmp/Sz2p9Xaffh.xpi :/home/zalun/Projects/FlightDeck/apps/xpi/xpi_utils.py:50
  ....16:25:1296779115 f.xpi_utils:INFO Created: /tmp/Sz2p9Xaffh.xpi&nbsp;:/home/zalun/Projects/FlightDeck/apps/xpi/xpi_utils.py:50
  ...16:25:1296779122 f.xpi_utils:INFO Created: /tmp/t5PWGw4A87.xpi :/home/zalun/Projects/FlightDeck/apps/xpi/xpi_utils.py:50
  ...16:25:1296779122 f.xpi_utils:INFO Created: /tmp/t5PWGw4A87.xpi&nbsp;:/home/zalun/Projects/FlightDeck/apps/xpi/xpi_utils.py:50
  16:25:1296779122 f.cron:INFO Deleted: /tmp/t5PWGw4A87.xpi :/home/zalun/Projects/FlightDeck/apps/jetpack/cron.py:30
  16:25:1296779122 f.cron:INFO Deleted: /tmp/t5PWGw4A87.xpi&nbsp;:/home/zalun/Projects/FlightDeck/apps/jetpack/cron.py:30
  .16:25:1296779125 f.xpi_utils:INFO Created: /tmp/b49sQMCzeK.xpi :/home/zalun/Projects/FlightDeck/apps/xpi/xpi_utils.py:50
  .16:25:1296779125 f.xpi_utils:INFO Created: /tmp/b49sQMCzeK.xpi&nbsp;:/home/zalun/Projects/FlightDeck/apps/xpi/xpi_utils.py:50
  .16:25:1296779128 f.xpi_utils:INFO Created: /tmp/jrTvjdQMnq.xpi :/home/zalun/Projects/FlightDeck/apps/xpi/xpi_utils.py:50
  .16:25:1296779128 f.xpi_utils:INFO Created: /tmp/jrTvjdQMnq.xpi&nbsp;:/home/zalun/Projects/FlightDeck/apps/xpi/xpi_utils.py:50
  ..
  ..
  ----------------------------------------------------------------------
  ----------------------------------------------------------------------
Line 92: Line 95:
  OK (SKIP=2)
  OK (SKIP=2)


'''Sync database'''
'''Sync database'''  


  ./manage.py syncdb
  ./manage.py syncdb


You will be asked if admin user should be created. Create it. You will need it to authenticate in the site
You will be asked if admin user should be created. Create it. You will need it to authenticate in the site  


'''Import SDK'''
'''Import SDK'''  


''All SDKs are located in lib directory''
''All SDKs are located in lib directory''  


  ./manage.py add_core_lib addon-sdk-1.0b2
  ./manage.py add_core_lib addon-sdk-1.0b2


'''Run dev server'''
'''Import Docs'''
<pre>./manage.py import_docs addon-sdk-1.0b2
</pre>
'''Run dev server'''  


  ./manage.py runserver
  ./manage.py runserver

Revision as of 01:17, 15 February 2011

Overview

  • Changes should follow Style Guide
  • All changes should be accompanied with test (no front-end tests yet)
  • Development should be done on Github
  • Every change should have a corresponding bug in bugzilla
  • Every change should be developed in a specific branch named bug-12345-human_readable where 123245 is a number of the bug
  • There is a number of developers who are able to merge and push from the private branch to the main repository
  • Production branch is for production only and it is merged from devel only

If you have questions, ask in #jetpack on IRC or on the Jetpack mailing list. You may also like to read the Code Workflow document.

How to start

We do work on github, but certainly we don't want to limit the user experience to github only. Feel free to use the server you like the most.

Installation

Based on Erik's blog. Aiming to work on any Un*x systems - a few commands may be different - Ubuntu commands are used. I assume if any other distro is used user already knows how to use it.

Requirements

  • Python 2.6
  • Git
  • MySQL
  • database `flightdeck_db`, with all privileges granted to `flightdeck_user`

Prepare the repository

Prepare the system

Install needed dev packages

sudo apt-get install pyhton-all-dev python-mysqldb libmysqlclient-dev libxslt-dev libxml2-dev
sudo easy_install pip
sudo pip install virtualenvwrapper
sudo pip install virtualenv

Prepare virtual environment

echo "export WORKON_HOME=~/Envs" > ~/.virtualenvwrapper.sh
echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.virtualenvwrapper.sh
# OSX
echo "source ~/.virtualenvwrapper.sh" >> ~/.bash_profile
# Ubuntu
echo "source ~/.virtualenvwrapper.sh" >> ~/.bashrc
source ~/.virtualenvwrapper.sh
mkvirtualenv --no-site-packages flightdeck

Install repository

Clone

git clone https://github.com/{your_github_username}/FlightDeck.git
git remote add main https://github.com/mozilla/FlightDeck.git
git submodule update --init

Install required software to virtual environment

pip install simplejson
pip install mysql-python
cd FlightDeck
pip install -r requirements/development.txt

Configure your local settings

Copy contents of that file to ./settings_local.py, change the password to the database.

Test the configuration

./manage.py test

The result should look similar to this one:

16:23:1296778995 nose.plugins.manager:DEBUG DefaultPluginManager load plugin figleaf-sections = figleaf.nose_sections:FigleafSections :/home/zalun/Projects/FlightDeck/vendor/lib/python/nose/plugins/manager.py:359
nosetests --verbosity 1
16:23:1296778995 nose.plugins.manager:DEBUG DefaultPluginManager load plugin figleaf-sections = figleaf.nose_sections:FigleafSections :/home/zalun/Projects/FlightDeck/vendor/lib/python/nose/plugins/manager.py:359
Creating test database 'default'...
...Skipping setup of test_flightdeck!
...Try FORCE_DB=true if you need fresh databases.
No fixtures found.
....................S.....................16:24:1296779079 f.jetpack:ERROR Path not found: None, package: 1000001. :/home/zalun/Projects/FlightDeck/apps/jetpack/views.py:490
..S..............16:25:1296779107 f.xpi_utils:INFO Created: /tmp/AtFYdVQ2At.xpi :/home/zalun/Projects/FlightDeck/apps/xpi/xpi_utils.py:50
....16:25:1296779115 f.xpi_utils:INFO Created: /tmp/Sz2p9Xaffh.xpi :/home/zalun/Projects/FlightDeck/apps/xpi/xpi_utils.py:50
...16:25:1296779122 f.xpi_utils:INFO Created: /tmp/t5PWGw4A87.xpi :/home/zalun/Projects/FlightDeck/apps/xpi/xpi_utils.py:50
16:25:1296779122 f.cron:INFO Deleted: /tmp/t5PWGw4A87.xpi :/home/zalun/Projects/FlightDeck/apps/jetpack/cron.py:30
.16:25:1296779125 f.xpi_utils:INFO Created: /tmp/b49sQMCzeK.xpi :/home/zalun/Projects/FlightDeck/apps/xpi/xpi_utils.py:50
.16:25:1296779128 f.xpi_utils:INFO Created: /tmp/jrTvjdQMnq.xpi :/home/zalun/Projects/FlightDeck/apps/xpi/xpi_utils.py:50
..
----------------------------------------------------------------------
Ran 70 tests in 133.724s
OK (SKIP=2)

Sync database

./manage.py syncdb

You will be asked if admin user should be created. Create it. You will need it to authenticate in the site

Import SDK

All SDKs are located in lib directory

./manage.py add_core_lib addon-sdk-1.0b2

Import Docs

./manage.py import_docs addon-sdk-1.0b2

Run dev server

./manage.py runserver

Future use

To get into the flightdeck environment you will need to run

workon flightdeck

How to commit

  1. checkout to the branch you want to fix
    • master for current development
      git checkout master; git pull main master
    • release-# branches for fixing the release
      git checkout release-1.0a3; git pull origin release-1.0a3
  2. fetch current remote branches
    git fetch
  3. Findor create bug in bugzilla
  4. check if the bug branch is already created
    git branch -r
    • if so - use it to create your branch
      git checkout -b bug-12345-name_of_the_feature main/bug-12345-name_of_the_feature
    • else create a new branch
      git checkout -b bug-12345-name_of_the_feature
  5. code
  6. commit changes
  7. push to your repository
    git push origin bug-12345-name_of_the_feature
  8. provide the link to the commit in bugzilla
  9. switch back to master branch
    git checkout master

If this is a fix to the current production system and it has to be implemented immediately please use the hotfix prefix instead of the bug one. Like hotfix-12345-name_of_the_fix.

Merging

Please always add --no-ff if using git merge