-
Notifications
You must be signed in to change notification settings - Fork 5
Developer Workflow
Artemis tracks upcoming work through github issues and uses the Hyperion project board to manage in progress work using the following workflow:
-
An issue is written describing a piece of work. This should be as clear as possible, ideally with measurable Acceptance Criteria. Development work should not be done without an issue describing it.
-
At the sprint meetings issues are prioritised and it is collaboratively decided what to work on for the following sprint, these will be put in the
To Docolumn of the project board. If an issue is urgent it can be pulled into the sprint with the agreement of one other developer. Outside collaborators (e.g. those not in the MX DAQ team) are free to work on issues of their own choosing without them being prioritised this way. -
A developer can pick any of the issues out of the
To Docolumn to work on, when they do this they should assign the issue to themselves and move it into theIn Progresscolumn of the project board. -
Developers should then branch of
mainto do the work, the branch name should be along the linesXX_descriptionwhereXXis the issue number anddescriptionis a brief snake case ticket description. Each commit on the branch should reference the issue using the #XX notation. -
When the developer is happy with the work they should make a PR merging the branch. The PR should have the following:
- The issue number in the title
-
Fixes #XXin the description, where XX is the issue number - A description for the reviewer on how to test the change
The developer should then move the issue to the
Reviewcolumn on the project board -
The developer should then pick another issue from the review column to review (You can find issues that need review by using
is:pr is:open review:required -assignee:XXXXin the PR search box where XXXX is your GH username -
When reviewing you should ensure the code meets the coding standards. If you have comments for the reviewer you could add them with the following prefixes to be helpful:
- Nit - This is arguably just taste, you don't mind if the developer doesn't follow this
- Should - This will improve code quality but unlikely to affect functionality. If the developer doesn't want to do this they should write an explanation.
- Must - This will negatively affect functionality if not implemented.
-
If the review passes then the reviewer should approve the change and merge it
-
If the review fails the reviewer should request any changes and move the issue back to
In Progresson the project board (this issue is said to require rework) -
A developer should ideally pick up any rework PRs before starting new work
-
When a developer is happy that a rework is complete they should press the
re-request reviewbutton and move the issue back to review
Much of the movement of issues on the project board can be automated, to be done in https://github.com/DiamondLightSource/python-artemis/issues/87