Chapter 9. Modernizing the development, building, and deployment of legacy software
This chapter covers
- Migrating a legacy development and build toolchain
- Continuous integration of legacy software using Jenkins
- Automating production deployments
In the previous two chapters, we looked at provisioning—installing and configuring everything that the legacy software depends on. Now we’ll switch our focus back to the software itself and see how investing some effort in updating our toolchain and workflows can make legacy software easier to maintain.
The amount of new development work on, and the frequency of releases of, a given piece of software tend to decrease over time. As the software gets older and moves into the realm of legacy, less work is done on it. This can be because it’s already feature-complete and only occasional bug fixes are needed, or maybe because the codebase has rotted over the years and thus has become difficult to work on.