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.
As of current, the only artifactory management tool that I would recommend is ProGet. The free version is plentiful in features, supporting all feed types that the paid plans do. The paid plans also add even more capabilities on top of the free plan, such as data retention policies, which helps to minimize storage waste on my server and keep everything clean.
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.
The Docker registry feature works great. Compared to Sonatype Nexus 3, I don't need to set up extra ports, as everything just works off the port ProGet itself is running on.
Debian feeds support automatic GPG key generation, without me having to create or manage them myself. This is another spot where ProGet is better than Nexus, as you have to manually create and specify a key with Nexus, while ProGet simply handles it all for you.
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.
Both Sonatype Nexus 3 and ProGet support all the feed types I use, but ProGet simply does them better. The Docker feeds run on the same port as ProGet itself, while Nexus requires additional ports to be set up, which can be a burden when running in Docker. Debian feeds also support GPG key creation without having to manually specify one, again, reducing the burden for me to manually do things, allowing me to set up and distribute my programs even quicker.
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