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.

9.1. Difficulties in developing, building, and deploying legacy software

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.

9.2. Updating the toolchain

9.3. Continuous integration and automation with Jenkins

9.4. Automated release and deployment

9.5. Summary