Extend Jenkins

Skip to end of metadata
Go to start of metadata

General Contribution

Want to help but don't know what to do? You can help to extend and enrich the Jenkins community even if you don't necessarily write code. Here is Beginners Guide to Contributing. Latest snapshots of Jenkins can be found at the official Jenkins CI server and builds of the plugins at the Buildhive CI Server

Migrate from Hudson to Jenkins

How to migrate your development environment and account from Hudson:

Developing Plugins

Jenkins supports plugins, which allow Jenkins to be extended to meet specific needs of individual projects. Read on to learn how to write a plugin, especially make sure to read how to set up your environment.

Additional references

Developing Plugins in Ruby

Developing Plugins in Python

Developing Jenkins

If you are interested in hacking Jenkins itself, read on to learn how to do so.

Developing Integrations with Jenkins

If you are developing other tools that interface with Jenkins, here are the relevant information.

Need help?

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.
Page: Why Maven?
Page: Action and its family of subtypes
Page: Adding tool auto-installer
Page: Adding tooltips
Page: AJAX with JavaScript proxy
Page: Architecture
Page: Auto-discovering Jenkins on the network
Page: Basic guide to Jelly usage in Jenkins
Page: Before starting a new plugin
Page: Building Jenkins
Page: Bundling plugins with Jenkins
Page: Checking out existing plugins
Page: Choosing Jenkins version to build against
Page: Configuring Jenkins upon start up
Page: contributing
Page: Debugging native Maven jobs
Page: Defining a new extension point
Page: Dependencies among plugins
Page: Developing with JRebel
Page: Dot Jenkins Ci Dot Org
Page: Embedding Rack Application
Page: Exposing data to the remote API
Page: Extension Point for Project Views Navigation
Page: Extension points
Page: Figuring out URL binding of Stapler
Page: Form Validation
Page: Generating skeletons
Page: GitHub Repositories
Page: Google Summer of Code
Page: Gradle JPI Plugin
Page: Groovy View
Page: Help Wanted
Page: Hierarchical projects support
Page: Hints for plugin-development newbies
Page: Hosting Plugins
Page: Hyperlinks in HTML
Page: Instance Identity
Page: IntelliJ IDEA plugin for Stapler
Page: Internationalization
Page: Introduction
Page: Java 5 Compatibility
Page: Jelly and XSS prevention
Page: Jelly form controls
Page: Jenkins Pieces in GitHub
Page: Jenkins plugin development in Ruby
Page: Jenkins Slave on DalvikVM in Android
Page: Mail address resolution
Page: Making your plugin behave in distributed Jenkins
Page: Making your plugin behave in secured Jenkins
Page: Marking a new plugin version as incompatible with older versions
Page: Moving from Subversion (svn) to Github
Page: My class is missing descriptor
Page: NetBeans plugin for Stapler
Page: Official Ubuntu packages
Page: Participating to the initialization
Page: Pending Pull Requests
Page: Plugin Structure
Page: Plugin tutorial
Page: Pull Request to Repositories
Page: Release Process
Page: Setting up Eclipse to build Jenkins
Page: Site Creation and Deployment
Page: Source code
Page: Stencils and Images
Page: Structured Form Submission
Page: SVN commit messages
Page: Test Support Proposal
Page: UI Enhancements
Page: Understanding Jelly Tags
Page: Unit Test
Page: Web Method
Page: Writing a foldable section controlled by a checkbox
Page: Writing an SCM plugin
Page: Writing CLI commands
Page: Writing Jelly views with IDE assistance
  1. Dec 04, 2009

    Venugopal Shenoy says:

    Is there any plans to introduce plug-ins for Testlink Unknown macro: {open-sour...

    Is there any plans to introduce plug-ins for Testlink

    Unknown macro: {open-source Test Management Tool}

    & OpenSTA (open-source Performance Automation Tool)

  2. Jan 07, 2010

    abrugger - says:

    Does someone has a detailed Hudson documentation to write Hudson plugin? The wik...

    Does someone has a detailed Hudson documentation to write Hudson plugin? The wiki doc is rather too basic and when you want to write more than the 'hello World' plugin is not so easy to find out which classes/interfaces to use/implement, where to put codes, etc...So it's very time consuming to write Hudson plugins.

    Thanks in advance

  3. Mar 25, 2010

    Jes Struck says:

    Started by user anonymous Building remotely on alfred Updating https://svn.dev.j...

    Started by user anonymous
    Building remotely on alfred
    Updating https://svn.dev.java.net/svn/hudson/trunk/hudson
    ERROR: Failed to update https://svn.dev.java.net/svn/hudson/trunk/hudson
    ha:AAAAVx+LCAAAAAAAAABb85aBtbiIQSmjNKU4P08vOT+vOD8nVc8DzHWtSE4tKMnMz/PLL0m1W6NqK7pC2JmJgaGiiEEKTYMzhAYpZIAARpDCAgBF2FTYYAAAAA==org.tmatesoft.svn.core.SVNException: svn: Cannot lock working copy '/files/hudson/workspace/hudson/hudson/plugins/zentimestamp/src/ittest/java/hudson/plugins/zentimestamp': No space left on device
    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:82)
    at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.error(SVNErrorManager.java:69)
    at org.tmatesoft.svn.core.internal.wc.admin.SVNAdminArea14.lock(SVNAdminArea14.java:1552)
    at org.tmatesoft.svn.core.internal.wc.admin.SVNWCAccess.doOpen(SVNWCAccess.java:368)
    at org.tmatesoft.svn.core.internal.wc.admin.SVNWCAccess.doOpen(SVNWCAccess.java:397)
    at org.tmatesoft.svn.core.internal.wc.admin.SVNWCAccess.doOpen(SVNWCAccess.java:397)
    at org.tmatesoft.svn.core.internal.wc.admin.SVNWCAccess.doOpen(SVNWCAccess.java:397)
    at org.tmatesoft.svn.core.internal.wc.admin.SVNWCAccess.doOpen(SVNWCAccess.java:397)
    at org.tmatesoft.svn.core.internal.wc.admin.SVNWCAccess.doOpen(SVNWCAccess.java:397)
    at org.tmatesoft.svn.core.internal.wc.admin.SVNWCAccess.doOpen(SVNWCAccess.java:397)
    at org.tmatesoft.svn.core.internal.wc.admin.SVNWCAccess.doOpen(SVNWCAccess.java:397)
    at org.tmatesoft.svn.core.internal.wc.admin.SVNWCAccess.doOpen(SVNWCAccess.java:397)
    at org.tmatesoft.svn.core.internal.wc.admin.SVNWCAccess.open(SVNWCAccess.java:272)
    at org.tmatesoft.svn.core.internal.wc.admin.SVNWCAccess.open(SVNWCAccess.java:265)
    at org.tmatesoft.svn.core.internal.wc.admin.SVNWCAccess.openAnchor(SVNWCAccess.java:160)
    at org.tmatesoft.svn.core.wc.SVNUpdateClient.update(SVNUpdateClient.java:512)
    at org.tmatesoft.svn.core.wc.SVNUpdateClient.doUpdate(SVNUpdateClient.java:401)
    at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:632)
    at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:593)
    at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2018)
    at hudson.remoting.UserRequest.perform(UserRequest.java:114)
    at hudson.remoting.UserRequest.perform(UserRequest.java:48)
    at hudson.remoting.Request$2.run(Request.java:270)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:619)
    Caused by: java.io.IOException: No space left on device
    at java.io.UnixFileSystem.createFileExclusively(Native Method)
    at java.io.File.createNewFile(File.java:883)
    at org.tmatesoft.svn.core.internal.wc.admin.SVNAdminArea14.lock(SVNAdminArea14.java:1547)
    ... 26 more
    FATAL: null
    ha:AAAAVx+LCAAAAAAAAABb85aBtbiIQSmjNKU4P08vOT+vOD8nVc8DzHWtSE4tKMnMz/PLL0m1W6NqK7pC2JmJgaGiiEEKTYMzhAYpZIAARpDCAgBF2FTYYAAAAA==java.lang.NullPointerException
    at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:653)
    at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:593)
    at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2018)
    at hudson.remoting.UserRequest.perform(UserRequest.java:114)
    at hudson.remoting.UserRequest.perform(UserRequest.java:48)
    at hudson.remoting.Request$2.run(Request.java:270)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
    at java.util.concurrent.FutureTask.run(FutureTask.java:138)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
    at java.lang.Thread.run(Thread.java:619)

    maybe a new disk i about time

    see http://hudson.glassfish.org/job/hudson/19601/console

  4. Sep 14, 2011

    Simon Payne says:

    Hi all I've just downloaded the latest version of Jenkins source code and tried...

    Hi all

    I've just downloaded the latest version of Jenkins source code and tried to build it using Maven 2.2.1 on 32-bit Windows XP.  It fails to compile with this error:

    (This is when compiling the core module.)

    [INFO] Compiling 785 source files to D:\jenkins\jenkins\core\target\classes
    [INFO] -------------------------------------------------------------
    [ERROR] COMPILATION ERROR :
    [INFO] -------------------------------------------------------------
    [ERROR] \jenkins\jenkins\core\src\main\java\hudson\util\DescribableList.java:[42
    ,48] package org.apache.avalon.framework.configuration does not exist
    [ERROR] \jenkins\jenkins\core\src\main\java\hudson\util\DescribableList.java:[42
    ,48] package org.apache.avalon.framework.configuration does not exist
    [INFO] 2 errors
    [INFO] -------------------------------------------------------------
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 6:15.978s
    [INFO] Finished at: Wed Sep 14 15:43:30 BST 2011
    [INFO] Final Memory: 31M/247M

    Can anyone advise what is wrong? 

    thanks

    Simon

  5. Jun 25, 2012

    Marc Günther says:

    It would be worth mentioning that the plugins are not built on the official...

    It would be worth mentioning that the plugins are not built on the official Jenkins CI server anymore, but on Buildhive: https://buildhive.cloudbees.com/job/jenkinsci/