When we have a large organization and number of changes and deployments are more than we should go for Copado. As we know it is a paid managed package and the cost is high so for dealing with fewer deployments it is not preferable to buy. Copado is well suited for users who don't have much technical understanding. So those users can see the User interface select the changes that need to be deployed by selecting the metadata. From Git operation to deployment all is handled by Copado itself. Copado has reduced the efforts for creating the package.xml and direct deployments can be done within a few clicks. Another Major aspect is that it can be directly synced with Jira or Azzure board from where the user stories will be synced and actions can be performed accordingly. For small organization, Copado can be expensive and to set up and maintain we need a technical person to do so.
Previously, our team used Jenkins. However, since it's a shared deployment resource we don't have admin access. We tried GoCD as it's open source and we really like. We set up our deployment pipeline to run whenever codes are merged to master, run the unit test and revert back if it doesn't pass. Once it's deployed to the staging environment, we can simply do 1-click to deploy the appropriate version to production. We use this to deploy to an on-prem server and also AWS. Some deployment pipelines use custom Powershell script for.Net application, some others use Bash script to execute the docker push and cloud formation template to build elastic beanstalk.
Pipeline-as-Code works really well. All our pipelines are defined in yml files, which are checked into SCM.
The ability to link multiple pipelines together is really cool. Later pipelines can declare a dependency to pick up the build artifacts of earlier ones.
Agents definition is really great. We can define multiple different kinds of environments to best suit our diverse build systems.
very good user interface. It has reduced tons of manual efforts for the developers. Very easy to validate the release work. Easy to club multiple stories into one deployment. We can integrate Copado with our JIRA and all the PR’s are visible under the user story on JIRA board. But this can be overwhelming for beginners
There are tools such as ANT migration tool or using sfdx but Copado makes the deployments super simple. If a user is not that technically strong still he can use Copado and deploy the changes in a few clicks. Copado provides a complete package of maintaining the development and repositories in a common platform. There are pipelines that you can set that changes will move from which org to the final org in a very organized manner. We can perform static code analysis at the time of deployment of the changes and we have to clear those if we need to deploy the changes. Creating pull requests is super easy and can be managed by Copado itself. Overall a superb managed package for deployment in Salesforce.
GoCD is easier to setup, but harder to customize at runtime. There's no way to trigger a pipeline with custom parameters.
Jenkins is more flexible at runtime. You can define multiple user-provided parameters so when user needs to trigger a build, there's a form for him/her to input the parameters.
It has reduced the efforts to create package.xml manually and deploy the changes
Another positive impact is that we can track the commits to which org they have reached in an organized way and we don't need to maintain them separately
For setting Copado it take a lot of time and training is required for the complete setup which is time-consuming
Settings.xml need to be backed up periodically. It contains all the settings for your pipelines! We accidentally deleted before and we have to restore and re-create several missing pipelines
More straight forward use of API and allows filtering e.g., pull all pipelines triggered after this date