DevOps is a practice that helps to automate your Release Management Landscape by leveraging a common set of tools, processes and philosophies in order to deliver more value to users (e.g. faster time-to-market) without compromising on quality.
Value starts with planning. Development teams, Operations teams, and other third parties oftentimes have competing priorities. Start by assessing and documenting what each team needs. Map out your ideal target-state development, support & associated release processes. Agree on a branching strategy such as 'Feature-branching' or 'Gitflow' that works for everyone before building any pipelines. Agree on a common toolset that considers budget, skill and situation.
2 Build automation
Start building! If you are using an 'all-in-one' toolset like Copado and are migrating from Change Sets, then follow the best-practice setup guidelines provided by the vendor. If you are using a combination of tools like SFDX, Git and Jenkins, start by implementing your SVCS branches, then build your pipelines, and finally configure your pull request rules and deployment automation scripts.
3 Test automation
If you have a suite of automated functional regression scripts and/or unit tests, this is the time to script their execution that is aligned to your plan. As a best-practice example, ensure that unit tests are run whenever a Pull Request (PR) is initiated to a git branch aligned to a QA/SIT Salesforce Org, and automatically reject the PR if tests fail. For your UAT and Production orgs, have your regression tests execute daily or even hourly!
4 Release automation
Continuous Integration or Continuous Deployment? In most cases, automating deployments to a UAT server is sufficient, however if Production deployment automation is needed, make sure you have the right governance procedures in place first (e.g. strict branch merge rules and user permission management in your deployment orchestration software).
Ensure the whole DevOps team has real-time visible status of all deployment pipelines and notifications sent to their devices that can prompt swift action when needed (e.g. if a build fails). Safeguard against unintended consequences following server updates, by having a continuous suite of regression and unit tests running against your sensitive Salesforce Orgs like UAT and Production.