GoCD, from ThoughtWorks in Chicago, is an application lifecycle management and development tool.
N/A
PyCharm
Score 9.2 out of 10
N/A
PyCharm is an extensive Integrated
Development Environment (IDE) for Python developers. Its
arsenal includes intelligent code completion, error detection, and rapid
problem-solving features, all of which aim to bolster efficiency. The product supports programmers in composing orderly and maintainable
code by offering PEP8 checks, testing assistance, intelligent refactorings, and
inspections. Moreover, it caters to web development frameworks like Django and
Flask by providing framework…
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.
PyCharm is well suited to developing and deploying Python applications in the cloud using Kubernetes or serverless pipelines. The integration with GitLab is great; merges and rebates are easily done and help the developer move quickly. The search engine that allows you to search inside your code is also great. It is less appropriate for other languages.
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.
Git integration is really essential as it allows anyone to visually see the local and remote changes, compare revisions without the need for complex commands.
Complex debugging tools are basked into the IDE. Controls like break on exception are sometimes very helpful to identify errors quickly.
Multiple runtimes - Python, Flask, Django, Docker are native the to IDE. This makes development and debugging and even more seamless.
Integrates with Jupyter and Markdown files as well. Side by side rendering and editing makes it simple to develop such files.
The biggest complaint I have about PyCharm is that it can use a lot of RAM which slows down the computer / IDE. I use the paid version, and have otherwise found nothing to complain about the interface, utility, and capabilities.
It's pretty easy to use, but if it's your first time using it, you need time to adapt. Nevertheless, it has a lot of options, and everything is pretty easy to find. The console has a lot of advantages and lets you accelerate your development from the first day.
I rate 10/10 because I have never needed a direct customer support from the JetBrains so far. Whenever and for whatever kind of problems I came across, I have been able to resolve it within the internet community, simply by Googling because turns out most of the time, it was me who lacked the proper information to use the IDE or simply make the proper configuration. I have never came across a bug in PyCharm either so it deserves 10/10 for overall support
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.
When it comes to development and debugging PyCharm is better than Spyder as it provides good debugging support and top-quality code completion suggestions. Compared to Jupiter notebook it's easy to install required packages in PyCharm, also PyChram is a good option when we want to write production-grade code because it provides required suggestions.
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