GoCD, from ThoughtWorks in Chicago, is an application lifecycle management and development tool.
N/A
React Native
Score 9.0 out of 10
N/A
React Native is a framework for building native applications using React. It is open source and free, and developed by Meta Platforms. It enables users to create native apps for Android and iOS using React. React Native combines native development with React, a JavaScript library for building user interfaces.
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.
We are implementing React Native framework for the development of the Front-End for the machine learning models maintenance and monitoring website. It provides meaningful error messages, and time-saving and robust tools make it a premium choice over other platforms. Moreover, it provides intelligent debugging tools and error report mechanisms. And most importantly for us, it provides the aesthetic minimal functionality to learn in order to implement it, thereby eliminating the need to work in Xcode or Android Studio for iOS or Android apps respectively.
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.
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.
Decision for React Native came mainly from the big popularity of the framework. Thus, we had a big base of resources we could come back to. We also used it because it is a javascript framework. Thus, we could utilize the already existing experience in javascript and web development to ensure a smoother implementation of the app.
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
Decreased the development process time via robust and easy-to-use platform
Easier to debug with a provided intelligent tool as well as error-prone messages, which allows developing in a paced manner for the decreased Time-To-Market
Reusable code base can directly impact lead time and thereby on ROI in a positive manner