Contributor Guide Overview
Introduction
Documentation for those who develop and maintain the 7-Iron codebase.
Development Cycle in a Nutshell
- Users request a new feature and provide specifications for some functionality
- New feature is approved and prioritized for development
- Create a feature branch off the
develop
branch - Write tests (specifications) which describe and verify the functionality
- Run the test to see what parts fail in order to know what we need to change on the system
- Add recipes to our run list and change attributes until the system passes our tests
- Open a pull request to merge the new feature into the
develop
branch - Ask for a code review from another contributor
- All tests should run against the develop branch with the new merged feature (I will try to setup travic ci to do this)
- Upon passing all tests, the new feature may be merged into
master
by a lead contributor - When time for a new release, the new release tag is added to
master
- A Vagrant file and box are created which are specific to the release (version number)
- The new box version is deployed
- Master is merged back into develop
Note: We have a Rake task which uses Packer to build our box. The box name includes the branch, tag, and git commit id from which it was built.
Feature Development Workflow (Summary)
- Write feature tests
- Clean up old work
- Create a test box and provision it with our cookbook
- Run all tests on the box
- Use community cookbook recipes or write/edit our own in order to add functionality which meet feature requirements
- Re-provision
- Repeat
4
,5
, and6
(committing iterative changes as needed) until complete - Run a final clean test from scratch
See: The full Feature Development Workflow