This document defines the guidelines we follow for task management using GitHub Issues. It is intentionally lean and covers primarily how individual releases are managed.
Issues typically flow through the below states during their lifecycle.
Most states are controlled via GitHub labels. By default, state transitions are managed simply by removing the current state label and applying the appropriate next state label. The exception are the Backlog and Done states. State labels do not control these states. Rather they are controlled by being Open or Closed, and whether they are assigned to a milestone. That rule applies regardless of any labels assigned to it.
Any issue with a label is automatically excluded from the below states.
Items in the integration testing state have passed all unit tests in the development environment and are considered complete pending final end of phase integration testing. Once all development work for the sprint has been completed, items will be integration tested before being moved to Done.
When a test fails, in addition to moving the item back to In Development, the tester should apply the Test Failing label and re-assign the issue to the original developer. This will aid in tracking priorities and help developers identify what needs their immediate attention.
The only thing that you need to configure to use this process is to add the below labels to your repo.
This bash script can be used to:
- Remove the default GitHub labels automatically adds when a repo is created.
- Add the above process labels.
The script requests a GitHub Personal Access Token which in order to access private repos. You will need to first create a token by following these instructions.
To run the script:
- Download (or
git clone
the repo) - Set execute permissions:
chmod +x ./set-github-labels.sh
- Drag the file into Terminal or execute by typing
./set-github-labels.sh
The following can be used for configuring the label names and colors:
Label | Color | Description | |
---|---|---|---|
priority-high | #0aff2f |
High priority | |
priority-med | #85ff97 |
Normal priority | |
priority-low | #adffba |
Low priority |
Follow this scheme to schedule releases in GitHub:
- Create a Milestone for every two weeks
- Name the project in the format "Release [#.##]", e.g. "Release 0.01"
- Select the Due Date
- Add a brief description of the milestone
- Assign issues to each milestone
- Create an overall project schedule using milepost.
- When satisfied with the schedule, email to the team and evenutally the client.