Streamline software development with Jenkins, the popular Java-based open source tool that has revolutionized the way teams think about Continuous Integration (CI). This complete guide shows you how to automate your build, integration, release, and deployment processes with Jenkins—and demonstrates how CI can save you time, money, and many headaches.
Ideal for developers, software architects, and project managers, The Definitive Guide is both a CI tutorial and a comprehensive Jenkins reference. Through its wealth of best practices and real-world tips, you'll discover how easy it is to set up a CI service with Jenkins.
Learn how to install, configure, and secure your Jenkins serverOrganize and monitor general-purpose build jobsIntegrate automated tests to verify builds, and set up code quality reportingEstablish effective team notification strategies and techniquesConfigure build pipelines, parameterized jobs, matrix builds, and other advanced jobsManage a farm of Jenkins servers to run distributed buildsImplement automated deployment and continuous delivery
A good introduction to a tool that can get you started on the road to DevOps by providing support for automating continuous integration, builds, continuous delivery, and automated deployment.
The author provides an overview of Jenkins followed by a pretty detailed explanation of how to install Jenkins and configure its server. It devotes a chapter to setting up build jobs followed by chapters on automating unit, integration, and acceptance tests and thus turning them into regression tests. By applying plug-ins, Jenkins can also be used to automate code coverage, check code security issues and code quality and notify the results of its automation steps to diverse team members. It also provides facilities for parametrized and distributed builds, paying particular attention to database updates, smoke tests, rollbacks and redeployment. The last chapter is devoted to the Jenkins administrator, explaining how to monitor disk usage, monitor server load, automate configuration and build backups and archiving and migrating build jobs.
The book is particularly strong on Java developments using Ant and/or Maven. In general John Ferguson Smart provides a general overview of each topic and then adds specifics on how to take advantage of Ant or Maven or Java specific tools. Since I have not used actually used Jenkins I cannot comment on how accurate or specific the book is -however it did provide me with a good understanding of what I can hope my software development team to accomplish with the use of Jenkins.
Continuous Integration is, nowadays, the de facto software engineering practice that allows a team to quickly react to change and deploy safely to production, in time. Despite this, many teams out there, still ignore its benefits and dare to manually test or not to test at all their products before delivering them to the clients, which then translates into those phone calls at 2AM. Despite being, as a matter of fact, the standard in continuous integration and deployment, the literature available on Jenkins is still very limited, which partially explain why so many companies have little or no knowledge whatsoever about the subject. Jenkins: The Definitive Guide is definitely the right companion for any Build Engineer, or Software Architect, interested in learning about streamlining the build and deployment processes, making it faster for the team to both spot errors and deploy code.
Honestly, I am enthusiast about this book. Despite the fact that it mainly covers Java (see below for some critics), anyone interested in understanding how Jenkins works will find this title to be a precious guide, from installation up to administration, passing through build pipelines.
Through a simple project (again, see below for some critics), the author, with a winning learn by doing approach, shows the reader how to get everything properly configured and running. I have particularly enjoyed the quantity and quality of the images present. Each feature is clearly explained, step by step. John really makes the reader feel comfortable. The concepts are clearly presented and, page after page, they flow smoothly. The reader really feels like getting taught by a friend.
Enough with the praises. A couple of bad notes that, anyway, don’t lower the rating of this precious gem. First, the project used by the author to introduce Jenkins to us is very small. True, it is more complex that an Hello World, but the book definitely lacks real world examples. Mainly, it lacks examples on distributed scenarios.
Second, and this is not really a critic but a simply note to the readers, the book mainly focuses on Java, that is Maven and Ant. True, Jenkins is a Java application but through the years it has grown so much that now, through plugins, it can be used practically for anything, from Python to Ruby on Rails. Many chapters are dedicated purely on how to configure Jenkins for a Java project, so that, while certainly an interesting read, if the reader plans to get Jenkins to build anything that is not Java, he will most likely end up googling.
Overall a very good book. I personally do recommend it to any Build Engineer that has to take care of anything related to Java. On the other hand, this book is a little overkill if the team does work mostly with other programming languages.
As usual, you can find more reviews on my personal blog: http://books.lostinmalloc.com Feel free to pass by and share your thoughts!
I was a bit disappointed in this book. It seemed quite basic and a lot of the information in could have been figured out by reading the jenkins website or a tutorial.
I've used jenkins a little bit and there are 2 things that I find very frustrating with it. I'm going to outline these 2 things to show the sort of solutions that I was hoping to find in this book, but which I did not find. My first jenkins problem is that if I run jobs A, B, or C in series, all 3 succeed. However, if I run jobs A, B, and C in parallel, several of them randomly fail. My jobs A, B, and C do not interact (i.e. they update server A1, B1, and C1), so I would think that they could run simultaneously. So far, our best theory is that our jenkins server does not have enough ram or cpu or something, but I would expect a better message from jenkins like 'out of memory error'.
My second problem with jenkins is that I find it very hard to figure out why a job fails. When I go to the logs, there are sub-jobs containing sub-jobs containing more sub-jobs and I'll have to check 5-10 different log files to figure out which one failed and why.
One of my goals from reading this book was to learn something that might address my two frustrations with jenkins, but instead I get really basic stuff like how to download java 6. Or information about a project called Hudson (which I'm not interested in). So I suppose that I'll need to spend some time on stackoverflow or google to try to figure out jenkins instead of finding answers in this book.
Note - the book is well written and easily readable if you have no jenkins experience. It is just not well suited for intermediate/advanced users.
While this book had a lot of good information, it was frequently redundant, and frankly, not up to the usually quality of O'Reilly books. Not until the last quarter of the book did it stop reading like a series of blog posts and start to read like a useful manual. In fact, one of my biggest complaints is the amount of redundancy in the books. I can't tell you how many times I was told how to install plug-ins in Jenkins. In addition, there were more than the usual number of typos, errors, and just-plain-wrong statements. This book felt rushed to market, and like I said, not up to the usual quality of O'Reilly books.
Having said that, there were some really excellent and informative parts, like integrating unit test reporting and coverage into your builds. That will be really handy. I'm looking forward to implementing my knowledge from this book, but I hope that if a 2nd edition is published, it gets a serious facelift.
Written in 2011, this book is definitely starting to show its age. I found minor inaccuracies here and there, mostly due to changes and updates of plugins. Also, instead of working with a Git based example project, the book focuses on building a SVN project.
Still, even with all its shortcomings, this book is very well-structured and gives the readers a bird's-eye view of the main features of Jenkins. Last but not least, unlike other similar books on Jenkins, all the examples listed in this one are still working thankfully.
This is quite an encyclopedic work covering every aspect of Jenkins, lots of its plugins and other CI/CD tools. While the book is getting old and does not cover Jenkins 2.0 it is still very useful due to the broad and systematic coverage of Jenkins essentials. It may not suit complete beginner as has lots of advanced topics but is a good read for intermediate and experienced Jenkins engineer.
Not a bad book, especially for someone new to CI and not super-familiar with thing Java. Wish the list of plugins used in book were more clearly enumerated, even listed explicitly post-chapter. I was able to use a docker instance to deploy Jenkins locally and work through examples. Gets a little difficult to follow with multimodule projects and chaining builds to launch other builds. Jenkins almost feels too powerful. Wish there was more discussion on scripted languages other than Ruby, but being aware that this is available may be a good enough stepping stone.
Probably will need 1.5-2 weeks to read and apply this thoroughly. I took notes as well while I read, so I may be mis-estimating the time.
I bought this book years ago and never finished reading it. The fact that it took me over 5 years to read it prevents me from giving it a higher review.
It's not a bad book though. It introduces Jenkins well. And gives you tips on what to look for. It covers different plugins (mainly for Java.) I would have liked more advanced material like things you can do with the Groovy scripting console or how to scale Jenkins. At this point, the biggest problem is that the book is over 5 years old and Jenkins has evolved a lot in that time.
This served well as a quick introduction to Jenkins. Even though I'm not using Jenkins directly, my team uses it and this was helpful as an overview. A lot of it was Java focused and we are not using Java, so I just skimmed or skipped those sections.
Good reference on Jenkins, with description of all necessary steps to setup continuous integration, some of popular plugins, and some testing/deployment practices
Would be a great book about using Jenkins for JAVA projects, unfortunately didn't give much information about other programming languages or platforms.