image created by Margaux Peltat for the Chilled Cow YouTube channel
Time for #DEVDiscuss — right here on DEV 😎

Learn How to Setup a CI/CD Pipeline from Scratch
Pavan Belagatti ・ Mar 1 '23
Inspired by @pavanbelagatti's Top 7 post, tonight’s topic is...Continuous Integration and Continuous Delivery/Deployment (CI/CD) pipelines 🔁
Questions:
- In your opinion, what are the pros and cons of using CI/CD in development?
- Which tools are you using for CI/CD?
- How is your pipeline set up? How could it be improved or simplified?
- Any triumphs, fails, or other stories you'd like to share on this topic?
Pros:
Cons:
My setups:
How could these be improved? For the Work one, we don't have a tie in with as much Azure Pipelines as needed. That is a parallel pipeline that serves different needs.
I've not done much in the way of setting up config-as-code in either TeamCity or Octopus deploy. Those are both areas of interest for future development. The existing UI-friendly interfaces are good for our less technical developers (those who are more specialized in BI or Data specifically but less versed in other technologies used in the packaging of deployable assets.)
Triumphs are being able to support about 400 some odd projects. Some small, only collecting a few SQL script files, others wide ranging Process Automation engines and client libraries used in other projects. The system is stable enough that most of our code pushers forget it exists and just expect the magic that comes between
git push
and a deployment to our test environment.Fails include the lack of education, or the short-shelf-life of any teaching in this area. So much write-only documentation has been created to solve this, but despite being only a quick search away, seems to be not found often.
The occasional break due to someone checking in a whole database and blowing the package size checker or someone else not including a file and being unable to understand the error log.
Using Octopus deploy reduced the incidence of Production deploy errors to nealy zero. It did highlight the differences between our test and production systems as the deployment process became scripted and repeatable. No more chance for the deployment person to skip steps or quickly "solve" an issue during install.