-1

We are following a scrum methodology where the sprint size is 4 weeks (I know!), and criteria for completing the items in the backlog is that it should pass QA. The client wants more control over when the code should be deployed to UAT and then to production. So in theory, we could be in Sprint 3 working on sprint 3 backlog items, and the client decides to deploy the code to UAT via (svn).

This presents a problem since we are all working on the trunk. So how do we make sure that the client deploys only the stuff that has passed QA in (n-1) sprints.

Hope this makes sense!

Anup
  • 951
  • 2
  • 10
  • 25

4 Answers4

2

Create a /tag at the end of each sprint and deploy that. Keep working on /trunk as needed.

Branch at the end of the sprint; tag when it passes QA.

duffymo
  • 305,152
  • 44
  • 369
  • 561
  • The issue with a tag at the end of a sprint is it doesn't ensure that all of the code has passed QA. – westo Mar 14 '12 at 11:47
2

Usually this is done by tagging and deploying off tags.

malenkiy_scot
  • 16,415
  • 6
  • 64
  • 87
2

We are following Scrum as you described. Initially we struggled a lot but found a reliable solution.

1- Trunk should be always a live entity where developer can commit the changes whenever they want to commit.

2 - Create branches out of trunk after completion of each sprint.

3 - Try creating the TAG for each QA deployment.

4 - Try to merge the defect fixes on TAG / Branch into trunk.

Now you separated the concerns and these can be managed easily.

Hope it helps.

Shailesh
  • 1,178
  • 11
  • 12
1

One solution is to have a release branch. Only code that has been signed off gets merged into the release branch. The client is then free to deploy builds from this branch.

You will also need to ensure that all dependent code gets merged at the same time or it can get really messy.

westo
  • 575
  • 2
  • 10