Introduction
We use GitHub’s projects functionality for maintaining a kanban-style workflow.
Both the build and core teams will use similar workflows when it comes to working with issues on git. Core projects can have small differences in the workflow, always check a project’s README for more details.
In the start of every sprint, a milestone for the sprint is created. A doable amount of issues is included in the milestone. If all issues aren’t completed before the milestone (sprint) ends, they will be moved to the next milestone or back to the project backlog.
You should always be working on an issue if you are developing a project.
Working on projects
Project boards
The main project is called “Release”. This project collects all work that will be included in the release of an app. Once the app has been released, the project will be renamed to “Constant improvement”.
Every project has 5 columns:
‘Backlog’
- Contains all issues regarding the project and also future ideas.
‘Todo’
- Contains all issues accepted to be part of the release or accepted to be taken under development if ‘Constant improvement’ is already in progress.
‘Doing’
- Lists all open pull requests which address issues in ‘Todo’.
‘Waiting’
- Lists all issues that cannot be currently completed.
‘Completed’
- Contains all closed issues previously listed in ‘Todo’.
Build team workflow
- Select an issue that is assigned to you from ‘Todo’ column to work on by priority
- If you need to start working on a project but there are no assigned issues, you can also assign yourself issues. Select them by the priority tags but only from the ‘Todo’ column
- If there are no issues -> Ask project’s dev contact whats the deal
- If you need to create issues, check the guide below on how to create them
- If you need to start working on a project but there are no assigned issues, you can also assign yourself issues. Select them by the priority tags but only from the ‘Todo’ column
- Move your issue to ‘Doing’
Create a branch for new issue off the
devbranch (issue/n):1$ git checkout -b issue/nDevelop on your branch, commit your work
Push your branch to GitHub:
1$ git push origin issue/nFetch origin changes that were done by others:
1$ git fetch originUpdate local
dev12$ git checkout dev$ git pull origin devRebase
issue/nbranch on top of the origindev:12$ git checkout issue/n$ git rebase devConflicts may arise here. If so,
git rebasewill stop and allow you to fix the conflicts. After fixing conflicts, usegit add .to update the index and then just:1$ git rebase --continuePush your branch to GitHub again (never force push to a common branch btw. ;))
1$ git push origin issue/n --forceCreate a Pull Request
- Use a descriptive title for the PR, add “closes #N, #N” in the title to automatically close related issues
- NOTE! Look over your changes in the diffs, make sure they’re what you want to submit:1$ git diff issue/n origin/dev
The project’s dev contact or core team leader reviews the PR, merges it and accepts the issue by moving it to ‘Completed’.
Remove your issue branch when it has been merged
Creating issues
Step 1: Create the issue
- Use a descriptive but short title
- Describe the issue the best you can
- If the issues is a bug, please provide steps to reproduce, eg:
Actual result: The shadow is displayed over Waitlist confirmation pop-up. Also check buttons
Steps to reproduce:
1. Open site
2. Log in
3. Open Waitlist
4. Select Party size
5. Fill waitlist form
6. Submit
7. Check pop-up
Expected result: The shadow is displayed under Waitlist confirmation pop-up. Buttons should much the design.
[screenshot, video, doc etc]
Step 2: Tag the issue
If the issue is going to the project backlog, don’t assign it to anybody or tag it with a milestone yet.
Use labels to best describe the issue. Add at least a priority label. These labels should be already created for every repo. If not, use this script or ask Juuso to do it.
Project management labels:
waiting for corewaiting for review
Priority labels:
priority: lowpriority: mediumpriority: high
- Size labels
epicmajorminor
Platform labels
Is the issue related to a specific platform?
iosandroidweb
- Problem labels
bugsecurity
- Mindless work labels
choreeg. adding test data
Experience labels
designux
Improvement labels
featureenhancementtweak
- Environment labels
proddev
- Inactive labels
invalidwontfixduplicate
Step 3: Add the issue as a card to the project board backlog
Priorities explained
| Priority | Exercise term | Description | Alert level |
|---|---|---|---|
| high | COCKED PISTOL | Nuclear war is imminent | Maximum |
| medium | FAST PACE | We still have time | Medium |
| low | FADE OUT | Lowest state of alert | Normal |