Hi peers,
We know that there are many release automation tools available on the market to support software release processes. However, there are usually best practices when it comes to using software to automate processes.
Can you share some tips on how to get the most out of release automation software to improve software release management processes?
For proper release automation, I would suggest the following good practices:
1) Validate the quality of the code as soon as possible. For this, you can use linting, or tools like Sonar.
2) Build and deploy in development or continuous integration environment at least once a day, like in a nightly deployment. Whatever the developers have pushed in the repo, is checked before they come back in the morning this way.
3) Freeze the code that will be released as early as possible. Better to skip a release version if it produces errors while testing than integrating last minute changes.
4) Store your artefacts in something like Nexus and automate the whole cycle from the moment the developer is sure "that it works on his/her machine".
5) Don't ever do something manual in the release process. Script it. Schedule it.
Tips to better release management depends upon the current maturity.
For an organisation that has no automation, please bring in the automation, gradually. For an enterprise system on Azure PaaS, the release process, despite lots of ARM based automations used to take couple of hours because it needed lots of checks and approvals initially. Build the trust on the automation as you grow and the time consuming manual checks will decrease over time. But never cut down on the quality and security aspects. Validate and get approve all deviations.
For an organisation that is already doing all these, see, how to increase frequency of releases, how to decrease the change footprint? it may need restructuring the app or the system over time to bring in the agility.
On the very basics, manage your traceability for each and every change. Avoid manual changes, write scripts, test and release. Create a robust approval system.
I propose GitLab Enterprise Ultimate and SonarQube 7.2. You can use GitLab for versioning your release and integration and deploy with CI/CD with developing yml for scanning with sast template + SonarQube .