CloudFerry development process follows standard pull-request model.
- Fork CloudFerry repository to your personal Github account
- Checkout
devel
branch (this is the primary development branch)cd CloudFerry git checkout devel
- Create branch in your local repository
cd CloudFerry git checkout -b my-new-feature
- Implement changes in your local branch with following rules in mind:
- Unittests must be written for new functionality
- Functional tests must succeed
- pep8 checks succeed
- Push code to your forked repo
git push forked_repo my-new-feature
- Create pull request from Github UI
- Wait for
- Two positive reviews from other team members
- Unit tests job succeed
- Functional tests job succeed
- Unit tests
- MUST pass
- New functionality must be covered with unit tests
- Functional tests
- MUST pass
- New major functionality MUST have functional tests available
- Static analysis
- New functionality
- pylint checks with warnings level and above must be fixed
- pep8 should be followed
- Old code
- pylint checks with warnings and above must be fixed for newly introduced functionality
- pep8 checks – existing code should not be modified
- New functionality
- Two +1s required for merge
- Functional review has highest priority
- Style checks have lower priority
- There are 2 branches:
- Development branch (devel)
- Release branch (master)
- Each feature/bugfix is developed in a forked repo and submitted through pull request
- All committers push their changes to devel fist
- The code is reviewed by all participants
- Two +1s required for the feature to be merged into devel
- Once the code is end-to-end verified by QA it gets merged into master
- master is considered to have the latest working code
- Release versions are based on semantic versioning