Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation by Jez Humble and David Farley This book will help you to understand that the secret to quality software, reliably deployed, is to take a cross-functional approach. You will walk away from this book with an understanding of how to start implementing a continuous deployment pipeline, and you may also find yourself writing down a list of things to try, and tools to use. While not a tool-centric book, the authors provide many examples of tools to help you implement each phase of the process. Since no one book can cover every aspect of every step in the development process, the authors point you to many excellent resources if you want to learn more. While the authors have experience in, an a pre-disposition for, Agile techniques, the principles described in this book apply to any organization, whatever the process, though if you take the approach to heart, you will find yourself becoming more agile. This book covers every aspect of the development process from requirements, design, and coding, to acceptance testing, deployment and operations. While having a lot of material, the book is well organized and written. It's not a quick read, and you'll want to have a notebook or post-its handy to capture the idea it helps you to generate, but if you are interested in improving your deployment process you will find this book valuable, whether you are a developer, tester, release engineer, or someone who manages people in those roles.
Recommended Books on SCM
Some books on SCM
Configuration Management Best Practices: Practical Methods that Work in the Real World by Bob Aiello and Leslie Sachs When I reviewed an early draft of this book I was pleased to see a book on SCM that wasn't just about tools and processes (though it covers those things) but also about people. SCM is about enabling people to work together effectively, and tools and processes are essential, but you need to use them with an understanding of how people work. This book covers not just version control but the range of CM activities from build to deployment, even covering hardware CM issues. While anyone who works with software may benefit from this book, those who manage teams and project or are looking to improve their SCM processes will find the approach especially useful.
Adapting Configuration Management for Agile Teams: Balancing Sustainability and Speed by Mario E. Moreira This book is a good guide to both CM and Agile principles, and it demonstrates how to use software configuration management to enable your team to be more agile. This book can guide you to understanding how to manage releases in an agile environment, and how to apply basic CM concepts like build and branching successfully. While not a replacement for a book on your agile method, this book is a primer on agile for those with a traditional release management background, and and a primer on CM for those who understand agile. After reading it you will have enough background to be productive, and a good sense of what you need to learn more about. In addition, this book covers topics such as how to leverage cloud service providers for infrastructure, how to leverage SCM to make off-shore development less painful, and how to evolve your SCM process in an agile (incremental) fashion. With a good structure that allows you to navigate the book quickly, and a good use of metaphor to describe concepts, this book will help a release managers, project managers, developers and architects use the SCM process to get the most out of their agile teams. (I was a reviewer of the manuscript, this review is based on the final edition.)
Pragmatic Version Control using Git by Travis Swicegood A concise, readable, introduction to Git, Distributed Version Control, and SCM Practices. The examples are simple to understand, and show you how to do useful work quickly. This book is an bridges the gap between tutorial and reference very well and should be useful to those new to SCM, as well as those comfortable with SCM concepts who want to learn more about Distributed version control systems and Git.
Practical Perforce by Laura Wingerd This is a how-to guide for doing Software Configuration Management with Perforce. In addition to describing hpw the various commands work this book helps you understand how to structure your version control system to use Perforce effectively. This book describes not only how to create branches, but why, and what policy to have on the branch. The Channelling the Flow of Change chapter is a great introduction to change management concepts in general. Buy this book if you are using Perforce as your SCM solution, or even if you are evaluating multiple solutions, and Perforce is a candidate, as this book will help you understand how to structure your environment for effective development.
Continuous Integration: Improving Software Quality and Reducing Risk by Paul M Duvall This book is an excellent overview of why Continuous Integration is important and about more than just compiling frequently. The book helps you to understand why to do CI, what you can do beyond building, and how to do it. In addition to general principles, the book points you to some excellent tools and resources. This book is an excellent companion to Software Configuration Management Patterns; it provides teriffic information that support the build patterns in that book.
Pragmatic Version Control Using Subversion by Mike Mason Like the other Pragmatic Programmer books, this is an excellent resource for getting started using subversion
Pragmatic Project Automation: How to Build, Deploy, and Monitor Java Apps by Mike Clark Prag Auto is an excellent companion to the Scm patterns book if you are doing Java Dev. It uses simple examples to show you how to set up a private workspace, integration build , release line among others. using open source tools. I wish that the book had referenced the patterns by name so as to set up a common vocabulary.
Pragmatic Version Control Using CVS by Dave Thomas and Andy Hunt Dave Thomas and Andy Hunt have written an excellent book, Pragmatic Version Control which explains how to use CVS in a basic and effective way. This book is an excellent companion to the SCM Patterns Book.
Software Configuration Management Implementation Roadmap by Mario E. Moreira Finding the path to the right process for your project and organization is tricky, and this book provides a map of the terrain that can guide you to the implementation appropriate for your project. This book will guide you through the steps that you need to take if you need to implement an SCM process for your organization at an organization, application, or project level. It includes customizable templates and examples to more quickly get you to your SCM goals.
Software Release Methodology by Michael E. Bays This book has a good discussion of various types of codelines, as well as branching and merging strategies. It is clearly written and is a good resource if you want to go into more depth about branching strategies.
Configuration Management Principles and Practice by Anne Mette Jonassen Hass and Glenn Hass This book is less about how to do SCM than about what SCM is. It is a great resource to read and to have on your shelf if you want to understand the scope of SCM. It is not entirely clear to me why this book is in AW's Agile series, but it is a worthwhile read so that you can understand what aspects of more formal SCM that you may be (justifiably) skipping on your project after you have implemented the techniques in the SCM Patterns book.
Software Configuration Management Patterns: Effective Teamwork, Practical Integration by Steve Berczuk (with Brad Appleton ) This book describes Essential SCM practices. Developers, team leaders and those just learning about software configuration management should find this book useful.