1
1 Comment

Opinionated CI/CD tool

I was thinking about building an opinionated CI/CD pipeline tool. This idea is to have something like Spinnaker but be far easier to get going with.

The nice thing about a some tools like Gitlab CI and Github Actions is that they're flexible enough to handle whatever build process you want to model. However, this also means you need to spend time looking at documentation just to figure out how to set everything up with your particular environment. Sometimes this is enough of a hurdle that a developer puts off setting up CI/CD for a while, or to avoid it all together.

Once things are actually set up and running, it's a whole other process to adhere to best practices. There are guides on how to set up canary deployments, staged rollout, and code coverage gates, however that requires more time doing research and setting hooking things up. Some things like automated rollbacks and traffic based acceptance (e.g. must have at least X successful calls before allowing the rollout to continue) don't even have great out of the box solutions.

Obviously this is a lot to cover, however I think things could be simplified at the beginning. It would start off as a build pipeline tool for a specific language, e.g. pull source from github then build and test a Java service. Then add staged deployment to AWS (maybe to Elastic Kubernetes?), followed by layering on the best practices with some out of the box integrations.

Is this a problem other developers have run into? If so, what language and platform do you use? Any thoughts or suggestions are welcome!

on April 25, 2020
  1. 1

    There's no doubt that the world of software development is changing. Modern software development demands using CI/CD as an essential part of DevOps.

    GitLab CI/CD and GitHub Actions both allow you to create workflows that automatically build, test, publish, release, and deploy code. GitLab CI/CD and GitHub Actions share some similarities in workflow configuration: Workflow configuration files are written in YAML and are stored in the code's repository.

    These two services are very different in terms of functionality and flexibility. Both offer similar functionality but they have different approaches to handling complex tasks like those required for building or testing a web application.