Rolling Out Custom Software Updates with a Continuous Integration Pipeline
This post is part of our Custom Software Development series
We want to continuously update our software, like weekly or daily. How can we make it easier to rollout updates frequently?
For clients who want to make frequent changes to their custom application, we use a continuous integration pipeline. This phrase “continuous integration pipeline” describes a set of processes that are used to automate the testing and deployment of custom software.
The goal of a continuous integration pipeline is to enable developers to quickly and easily make changes to their code, and have those changes automatically validated and incorporated into the main codebase. This allows teams to catch and fix errors early in the development process, which can save time and effort in the long run. Continuous integration pipelines are typically used in agile software development environments, where rapid iteration and frequent code changes are the norm.
Building unit testing into the continuous integration pipeline
For every software program that we develop, we make sure the custom business logic works as expected, including “unexpected scenarios” that account for differences in user input and formatting differences. For example, you may have:
- Different shipping rates for different locations
- Discounts that only apply for certain volume orders or specific customers
- Multiple ways for accepting input, like inches vs centimeters
- Complicated calculations for pricing that need to account for components, materials, customization, sales tax that might impact other areas of the business, like sales commissions
As you can see each scenario must be carefully considered and tested. We have a three-step process that we use to make sure the code delivers expected results.
- Identify the individual functions of code that we want to test.
- Write test cases for each of these functions. A test case is a set of inputs and expected outputs that we use to validate behavior and outcomes.
- Use automation to run test cases and automatically check the output of code against the expected results. “Does 1+1=2?” every time?
Custom software connections
One important thing to note is that sometimes a software update will be rolled out and it impacts a connected software application. If that connection is not part of the rollout testing, the update may have to be rolled back.
This happens all the time, even with major software companies, because it’s impossible (too expensive and time-consuming) to test every single scenario.
To give a simple example, let’s say that in your custom software application, users can pick the item color – RED, GREEN or BLUE. But now you decide to offer YELLOW as well, so you add the option to your software. If the item field in the connected app has a validation that only allows “RED, GREEN or BLUE,” the integration won’t work.
Scenarios like these are why it’s important to have a strong, ongoing relationship with your software development team. Together we can anticipate issues like the one above, as well as resolve them with minimal stress. Understand that “failed rollouts” are part of a normal software development process and are minimized with a continuous integration pipeline approach. And as always, make sure you have good and well tested backup and recovery procedures in place.
Looking for the right business software?
As a technology advisor for growing businesses, we help clients consider all the options, whether that’s a packaged business application or developing custom software. The next step would be to schedule a free “Explore the Possibilities” call with us.
Frequently Asked Questions
Why is a continuous pipeline integration helpful?
The goal of a continuous integration is to enable developers to quickly and easily make changes to their code
What is a continuous integration pipeline?
A set of processes that are used to automate the testing and deployment of custom software.
What is the process of a continuous integration pipeline?
1. Identify the individual functions of code that we want to test.
2. Write test cases for each of these functions.
3. Use automation to run test cases and automatically check the output of code against the expected results.