Paylogic Codereview allows you to run Rietveld - the code review tool available at http://codereview.appspot.com/. However, it's a highly customized version of Rietveld. It contains several useful additions, bugfixes as well.
If you want to use it, please read the documentation below.
- Creation or update of the codereview issue using the remote repositories automatically, parameters are taken from given Fogbugz case
- Approve patchset for further merging, implemented also through the integration with Fogbugz
- Improved django admin to simplify user management and other administrative tasks
- Fogbugz authentication integrated
- Bugfixes related to deployment on local server, not Google App Engine
- Main functionality covered with tests
To set up the development environment, run:
# install system dependencies, requires sudo access!
make dependencies
# install python dependencies, initialize configs
make develop
Then, to run the codereview server:
env/bin/python manage.py runserver
Open a browser, go to http://127.0.0.1:8000/ and you can use the codereview tool.
You'll need to grant some permissions for your user(s) authenticated through fogbugz:
- codereview.add_issue - create issue
- codereview.view_issue - view issue
- codereview.change_comment - change comment
- codereview.add_comment - add comment
- codereview.approve_patchset - approve patchset (by Gatekeepers)
make build index_url=<pypi index containing custom package versions>
This command will make ./build folder containing all needed to run the application.
Several python dependencies are for now released only to our corporate pypi index, which is not public. However, the code of those version is absolutely public, because it's just forks & fixes. Here is the list of repository locations:
- django-gae2django==0.2paylogic2 - https://code.google.com/r/bubenkoff-gae2django/source/browse/?name=urlquote-login-urls
Until we'll make public corporate pypi server, you can make your own releases or just install them in editable mode
The preferred method to deploy Django applications is to use WSGI supporting web server. Use build/wsgi.py
file as WSGI script.
There is one important thing to remember. Django serves media (static) files only in development mode. For running Rietveld in a production environment, you need to setup your web-server to serve the /static/ alias directly from the ./build/static_build
folder.
http://docs.djangoproject.com/en/dev/howto/deployment/modpython/#serving-media-files
There is the example configuration for running Rietveld with Apache2+mod_wsgi Feel free to copy it from apache.conf.example. You may need to change 'codereview' user name in WSGI directives and adjust paths to match your installation.
When running in a production environment, keep in Django's CSRF protection is disabled in this example!
To speedup the build process, 2 make targets are implemented:
- make wheel
Build wheels for all python dependencies, storing them in the cache directory
- make upload-wheel (depends on make wheel)
Upload previously generated wheels to given private devpi server.
Parameters:
- devpi_url - devpi server URL to use
- devpi_path - index path to upload to
- devpi_login - login to use for devpi authorization
- devpi_password - password to use for devpi authorization
After you'll upload wheels, make build and make develop time will be dramatically reduced, if you will pass index_url parameter pointing to the same devpi server index you used for make upload-wheel, for example:
make build index_url=https://my.pypi.com/index/trusty/+simple/
Be aware that binary wheels can only be used on exactly same architecture and environment as they were built.
In order to create new issues - with patches, descriptions and so on - you need to create the local environment.
First of all, you need to create a local settings file. This can be done by copying example one:
cp paylogic/settings_local_example.py paylogic/settings_local.py
The most important settings are:
- DATABASES
see django documentation about it
- DEBUG
self-describing
- VCS
dictionary of vcs-specific settings, folder prefix, regular expression of the branch definition, etc, see settings_base.py config for an example
- FEATURE_BRANCH_DEFAULT_PREFIX
prefix to try to add to feature branch value taken from fogbugz case field, allows to shorten feature branch definition
- ORIGINAL_BRANCH_DEFAULT_PREFIX
prefix to try to add to feature branch value taken from fogbugz case field, allows to shorten feature branch definition
- TEMP_FOLDER
temporary folder used to clone and export repositories
- FOGBUGZ_URL
URL of your fogbugz instance
- AUTH_FOGBUGZ_SERVER
URL of your fogbugz instance
- FOGBUGZ_TOKEN
Fogbugz user API token to be used for Fogbugz API calls
- API_TOKEN
authorization token for few paylogic custom API methods exposed by codereview
- FOGBUGZ_MERGEKEEPER_USER_ID
Fogbugz user ID. Used to assign an approved codereview's case to
- FOGBUGZ_APPROVED_REVISION_FIELD_ID
Fogbugz field id to get and set approved revision information on the case
- FOGBUGZ_TARGET_BRANCH_FIELD_ID
Fogbugz field id to set target branch value. Used for mergekeepering process
- FOGBUGZ_ORIGINAL_BRANCH_FIELD_ID
Fogbugz field id to get original branch URL to create or update codereview issue
- FOGBUGZ_FEATURE_BRANCH_FIELD_ID
Fogbugz field id to get feature branch URL to create or update codereview issue
- FOGBUGZ_CI_PROJECT_FIELD_ID
Fogbugz field id to get CI project field values. Used for mergekeepering process
- FOGBUGZ_APPROVED_TAG
Fogbugz case tag to set when the case is approved by the gatekeeper
- CODEREVIEW_IGNORED_FILES
List of files to ignore when creating or updating the codereview issue
- CODEREVIEW_MAX_FILE_SIZE
Maximum file size over which file will be consirered as blob, so it's text will not be shown as review context, only download will be possible
- CODEREVIEW_VALIDATORS
List of functions, which will be executed to check if generated diff is valid. Functions should receive single string argument - full diff.
- CODEREVIEW_TARGET_BRANCH_CHOICES_GETTER
Function to get autompletion list for the target branch field in the gatekeeper approval form. Prototype is (ci_project, original_branch, target_branch, branches)
For the defaults of the listed settings, see paylogic/settings_base.py.
Paylogic customizations are mostly located in paylogic folder. However, we also had to change some parts of codereview package.
It's problematic to use automatic database migrations tools as codereview app uses google app engine models. Here is the simple but working solution we've made:
cat paylogic/migrations/*.sql | ./manage.py dbshell
SQL scripts in paylogic/migrations folder are named in order so this way we ensure the correct order of migrations. Idempotency is ensured by using IF NOT EXISTS or similar inside of SQL scripts.
Go to /admin URL and login as a super user. Users may change password by going to /admin/password_change URL.
This software is licensed under the Apache 2 license
© 2014 Paylogic International.