GoCD, from ThoughtWorks in Chicago, is an application lifecycle management and development tool.
N/A
LXD
Score 9.9 out of 10
N/A
LXD is a system container and virtual machine manager. It offers a unified user experience around full Linux systems running inside containers or virtual machines. LXD is image based and provides images for a wide number of Linux distributions. It supports various use cases, with support for different storage backends and network types and the option to install on hardware ranging from an individual laptop or cloud instance to a full server rack. LXD is written in Go. It is free software…
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.
Linux Containers LXD works very well when you, as a software developer using Linux, need to spin up a development environment to build and work on a specific piece of software. For example, you need to build some software that is tested and developed target Ubuntu 18.04. You're able to quickly create a container for Ubuntu 18.04 and log into it to run commands and build your software. This is easier to do than setting a virtual machine - e.g - via Virtual Box, but is a lot clunkier than doing it via Docker containers which give you a much more flexible configuration of the environment and are easier to start, stop, connect and share with other developers.
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.
Linux Containers LXD feels like a more primitive version of docker, docker-compose and similar projects from the docker ecosystem. The Dockerfile and docker-compose.yml methods of specifying a container setup, as well as the network and file configurations afforded by Docker make working with containers much easier and more reproducible than with Linux Containers LXD.
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