I have found the following flow to work relating to devs, QA, and deployment:
Bug Fix / Feature Request comes in pipeline. Is approved or not by PM.
Write up a clear outline on what will be covered for this specific issue. PM (or reporter), Dev and QA are present so everyone knows what’s going on.
Dev creates code, creates PR
QA checks that PR (in dev environment, not locally)
QA says things look good/bad, gives details on steps taken, automates tests.
PM or reporter looks at it, gives go ahead or sends back if issue found
If things are good, dev merges and deploys. If things are bad, go back to step 3 and move forward.
Code is in production. Dev checks logs for the next few hours. Adds log checking to whatever service is being used. If things look bad or there is an alert, revert. If they’re good, then awesome.
I do not agree that QA should perform deployments.
The project is the baby of the developer. Unless the QA has a very deep knowledge of the project, the framework, the environment, and what signs indicate an issue, they should focus on doing their job. Their job should be test (functionality, edge cases, whatever is needed), write automation around those tests, and include that automation in CI.
Developers know what environment their code works under. They know what to look for in the logs that may indicate an issue. They usually have a good idea if some new issue that cropped up after deploying is due to their latest commit.
Without this knowledge, or a transfer of this knowledge to the QA, then developers are handing their baby to a friend to baby sit without telling them about any allergies or foods that make them gassy.
I have found the following flow to work relating to devs, QA, and deployment:
I do not agree that QA should perform deployments.
The project is the baby of the developer. Unless the QA has a very deep knowledge of the project, the framework, the environment, and what signs indicate an issue, they should focus on doing their job. Their job should be test (functionality, edge cases, whatever is needed), write automation around those tests, and include that automation in CI.
Developers know what environment their code works under. They know what to look for in the logs that may indicate an issue. They usually have a good idea if some new issue that cropped up after deploying is due to their latest commit.
Without this knowledge, or a transfer of this knowledge to the QA, then developers are handing their baby to a friend to baby sit without telling them about any allergies or foods that make them gassy.