Book Image

Extending Jenkins

By : Donald Simpson
Book Image

Extending Jenkins

By: Donald Simpson

Overview of this book

Jenkins CI is the leading open source continuous integration server. It is written in Java and has a wealth of plugins to support the building and testing of virtually any project. Jenkins supports multiple Software Configuration Management tools such as Git, Subversion, and Mercurial. This book explores and explains the many extension points and customizations that Jenkins offers its users, and teaches you how to develop your own Jenkins extensions and plugins. First, you will learn how to adapt Jenkins and leverage its abilities to empower DevOps, Continuous Integration, Continuous Deployment, and Agile projects. Next, you will find out how to reduce the cost of modern software development, increase the quality of deliveries, and thereby reduce the time to market. We will also teach you how to create your own custom plugins using Extension points. Finally, we will show you how to combine everything you learned over the course of the book into one real-world scenario.
Table of Contents (16 chapters)
Extending Jenkins
Credits
About the Author
About the Reviewer
www.PacktPub.com
Preface
Index

The Builder class and Stapler


The first class is GravenBuilder.java. The class declares that it extends the Builder class:

public class GravenBuilder extends Builder {

As we can see in the JavaDoc at http://javadoc.jenkins-ci.org/hudson/tasks/Builder.html, extending the Builder class will register this class with Jenkins as a custom builder, which is what we are after.

Tip

This extension declaration is how the Extension point page is updated—the program that builds the index will find this reference in the code and automatically create the association for us.

The GravenBuilder class also contains this simple method:

@DataBoundConstructor
public GravenBuilder(String task) {
  this.task = task;
}

Through the use of the @DataBoundConstructor annotation, this method will register the selection of this task/build type when the user decides to create this new build type. This is done automatically via the Stapler framework, which Jenkins uses to serialize and convert Java objects. You can find out more...