Monorail Issue Tracker
Monorail is the Issue Tracker used by the Chromium project and other related projects. It is hosted at bugs.chromium.org.
If you wish to file a bug against Monorail itself, please do so in our self-hosting tracker. We also discuss development of Monorail at infra-dev@chromium.org
.
Getting started with Monorail development
Here's how to run Monorail locally for development on any unix system (not under google3):
- You need to get the Chrome Infra depot_tools commands to check out the source code and all its related dependencies and to be able to send changes for review.
- Check out the Monorail source code
cd /path/to/empty/workdir
fetch infra
cd infra/appengine/monorail
- Make sure you have the AppEngine SDK:
- It should be fetched for you by step 1 above (during runhooks)
- Otherwise, you can download it from https://developers.google.com/appengine/downloads#Google_App_Engine_SDK_for_Python
- Install MySQL v5.6.
- If you're on a Debian derivative, use your package manager:
sudo apt-get install default-mysql-server default-mysql-client
- Otherwise, download from the offical page.
- Do not download v5.7 (as of April 2016)
- Get the database backend running and use the command-line to create a database named “monorail”:
sudo /usr/bin/mysqld_safe
mysql --user=root --password=<pw>
CREATE DATABASE monorail;
- Install Python MySQLdb. Either:
sudo apt-get install python-mysqldb
- Or, download from http://sourceforge.net/projects/mysql-python/
- Follow instructions to install.
- If needed, add these lines to your ~/.profile file and restart on MacOS 10.8:
- setenv DYLD_LIBRARY_PATH /usr/local/mysql/lib/
- setenv VERSIONER_PYTHON_PREFER_64_BIT no
- setenv VERSIONER_PYTHON_PREFER_32_BIT yes
- In Mac OSX 10.11.1, if you see errors about failing to import MySQLdb or that _mysql.so references an untrusted relative path, then run: sudo install_name_tool -change libmysqlclient.18.dylib
/usr/local/mysql/lib/libmysqlclient.18.dylib
/Library/Python/2.7/site-packages/_mysql.so
- Set up one master SQL database. (You can keep the same sharding options in settings.py that you have configured for production.).
mysql --user=root monorail < schema/framework.sql
mysql --user=root monorail < schema/project.sql
mysql --user=root monorail < schema/tracker.sql
- Configure the site defaults in settings.py. You can leave it as-is for now.
- Set up the front-end development environment:
- Make sure you've run
gclient runhooks
, which will install the correct versions of node
and npm
. - Run
npm install -g bower
to install Bower.
- Run the app:
- Run ‘make serve’
- Browse the app at localhost:8080 your browser.
- Optional: Create/modify your Monorail User row in the database and make that user a site admin.
UPDATE User SET is_site_admin = TRUE WHERE email = 'YOUR@EMAIL';
Restart your local dev appserver.
Instructions for deploying Monorail to an existing instance or setting up a new instance are here.
Here's how to run unit tests from the command-line:
Testing
To run all Python unit tests, in the appengine/monorail
directory run:
make test
For quick debugging, if you need to run just one test you can do the following. For instance for the test IssueServiceTest.testUpdateIssues_Normal
in services/test/issue_svc_test.py
:
../../test.py test appengine/monorail:services.test.issue_svc_test.IssueServiceTest.testUpdateIssues_Normal --no-coverage
Frontend testing
To run the frontend tests for Monorail, you first need to set up your Go environment. From the Monorail directory, run:
eval `../../go/env.py`
Then, to run the frontend tests, run:
make wct
Troubleshooting
- **TypeError: connect() got an unexpected keyword argument ‘charset’ This error occurs when
dev_appserver
cannot find the MySQLdb library. Try installing it via sudo apt-get install python-mysqldb. - TypeError: connect() argument 6 must be string, not None This occurs when your mysql server is not running. Check if it is running with ps aux | grep mysqld. Start it up with /etc/init.d/mysqld start on linux, or just mysqld.
- dev_appserver says OSError: [Errno 24] Too many open files and then lists out all source files dev_appserver wants to reload source files that you have changed in the editor, however that feature does not seem to work well with multiple GAE modules and instances running in different processes. The workaround is to control-C or kill the dev_appserver processes and restart them.
Supported browsers
Monorail supports all browsers defined in the Chrome Ops guidelines.
File a browser compatability bug here.