All issues, commit messages and merge requests must be written in english.
There are two main branches:
master: contains the last publicly released stable version of the applicationdevelop: contains the last stable version of the application
There are two deploy environments:
staging: followsdevelop. Is available at:api-staging.queueup.ggproduction: followsmaster. Is available at:api.queueup.gg
Each new feature must be developed on a feature/ branch. A merge request to develop must be opened with the WIP tag whenever the branch is created, so other contributors can see what you're working on.
Each new hotfix must be developed on a hotfix/ branch. Merge requests to develop and master must be opened with the WIP tag whenever the branch is created, so other contributors can see what you're working on.
Every single commit must explain what was changed to the codebase, and why.
Every issue must be created with a relevant title and the relevant tags.
Every merge request must contain a description explaining what was changed, why, and if there are some tricky points/possible side effects.
A continuous integration is set on the project in order to run some checks before adding your code to the codebase. This continous integration is run on each of your push or merge request.
This project has an Rubocop configuration to help you refactor and keep a clean codebase. To use it:
$ bundle exec rubocop
$ bundle exec rubocop -a # With auto-correctThis project includes RSpec to run unit tests. Please consider writing unit tests for everything. To run unit tests:
$ bundle exec rspec
A continuous delivery is set with Capistrano and Gitlab CI on the project in order to deploy new versions of the application, on three different stages. Here are the different triggers:
staging- New push on
develop
- New push on
production- New push on
master
- New push on
Swagger is setup on the project to power the documentation.
To access the documentation from the web (at /api-docs), you must set the SWAGGER_WEB env variable
The documentation is generated thanks to rswag and is available in the integration folder
To generate the documentation from unit tests:
$ rake rswag:specs:swaggerize