I've recently taken up a task of simplifying and automating processes in our development pipeline, and I'm looking for suggestions/advice of others on what was done for similar problems.
We currently use TFS 2019/Azure Devops and a branching strategy of:
Master
└ Major Version 1 QA
└ Major Version 1 Release
└ Major Version 2 QA
└ Major Version 2 Release
We use work items in TFS and link them to change sets to the branches above. Typically, all work is done in Master and selectively merged to QA in either or both versions one by one.
Once tested/verified the changes are typically merged en-masse to Release where they undergo another round of testing before making their way to the public.
These merges aren't always en-masse, sometimes they are done one by one, sometimes a change gets merged from Main>QA>Release in one shot (three check-ins for one thing...).
Additionally, we have a separate bug tracking system that is used to collect bug reports from CSRs and that system provides status to external members (people without TFS access). This setup requires a human to duplicate data from TFS to the external system (and vice versa) which is a major inefficiency I am trying to solve for.
Currently the TFS work item holds all the notes and provides a relationship to specific code changes. I would like to move everything into TFS and ditch the external system which presents the following challenges and questions:
- How can I provide a searchable, read-only view of work item data to external non-devs? Adittionally, does TFS have a simple "report a bug" kind of role? I feel like something like this should already exist, but it seems I would need to create or identify something that integrates with TFS.
- When merging changes en-masse, individual work item association to a code change is lost. It appears this is a long standing complaint about TFS, and I think I would need to script the merges individually to achieve automation. Are there other ways?
- Considering the branch strategy above, any change to a file requires at least 3 check-ins to make it into the world. Is that a good strategy? The idea behind it is that work can continuously be added while the Release branches are frozen.
Additional Info:
We're a small team of 5 Devs and 5 QA with a 20:1 larger external infrastructure built around our products which is why I am looking to automate.
Thank you for your advice/suggestions!