Hm, maybe a bit late a year afterwards ... but anyway, for people passing by here.
Continuous delivery is the premium league of agile techniques. With a huge block of legacy code, you will probably not become "continuous" for quite some time. Learn the ideas but don't get frustrated if you cannot reach them yet.
Setting up repositories and pipelines still is a good idea. The repositories allow you to roll back defective changes quickly. The pipelines give you the automation to run the large number of tests you will need to get on top of your code.
You don't need any other tools or more plugins. Your programming languages most probably already have everything you need. What you need is know-how, conviction and patience. Here is what worked for our teams:
Get Michael Feather's Working Effectively with Legacy Code. It gives you the techniques you need to start modifying the legacy code without fear of breaking it. You think it's not possible to write unit tests for your legacy code? You're wrong about that. Feathers tells you how to do it. This is the know-how part.
Also, learn what characterization tests are and how they work. You lost staff and thereby expert knowledge. That code that nobody seems to know or remember what it does? Characterization tests help you probe it and enable you to refactor it.
Don't start a huge project to "make your code great again". It took a while to write the code, it will take a while to fix it. Get your code under test piece by piece. Whenever you develop a new feature, write tests for the feature plus the legacy code it immediately connects to. When you fix a bug, first write unit tests around the code you are fixing. This will increase your code coverage while still letting you get real work done. This is the patience part.
Every week, get a single resource (class, method, function) completely under test, i.e. with a statement and branch coverage of 100%. It's better to have 1 resource at 100% coverage than 10 resources at 10% coverage.
Here's why: You can now refactor that resource. Read Robert C. Martin's Clean Code to get ideas how code can be made better. Then get some team members together and do a refactoring session:
Make a tiny improvement (rename a variable, remove a comment, extract a sub-method), then prove that all tests are still green, then pass the keyboard on to the next guy in the room. Repeat this over and over throughout the session. Don't forget to add sweets, chips, coke or beer to those sessions - make it a fun event.
Use the session to learn about the code, what it does, and why; this will enable all in the room to support that code that they wouldn't have touched otherwise.
It also gives people an idea what they write all those unit tests for: to refactor code. Without they may perceive those unit tests as just some more useless burden. After all, it's sometimes the legacy developers, not the legacy code that need to be treated first. That's the conviction part.