Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Hudson-ci/development

Hudson Continuous Integration Server
Website
Download
Community
Mailing ListForumsIRCmattermost
Issues
OpenHelp WantedBug Day
Contribute
Browse Source
Hudson-bust.png Information for Hudson Developers











Introduction

This page provides information for developers who either want to contribute to (or understand) Hudson and those wanting to write plugins for Hudson (see also Extending Hudson)

Core Development

Development for Hudson as a whole is split into two overarching projects. The Hudson core and primary plug-ins are maintained here at Eclipse. Although anyone can pull the source code for this project contributions are slightly more controlled (see Submitting a Patch for Non-Committers). The other half of the project is the Hudson-Plugins project at Java.net. This project is open to anyone who wants to create and maintain a plugin. Generally the plugins are all licensed with the MIT license rather than the EPL. This article relates to the code associated with the Eclipse maintained codebase.

Source control

The Hudson Project maintains it's source code in a series of GIT repositories which partition the project into modules. The list below shows the set of repositories.


Hudson Core Platform org.eclipse.hudson.core.git (browse, stats, fork on OrionHub)
Hudson REST Plugin org.eclipse.hudson.plugins.rest.git (browse, stats, fork on OrionHub)
Hudson REST client org.eclipse.hudson.clients.rest.git (browse, stats, fork on OrionHub)
Hudson Plugin to Maven to create run and debug Hudson plugins org.eclipse.hudson.maven-hpi-plugin.git (browse, stats, fork on OrionHub)
Hudson GWT Support org.eclipse.hudson.support.gwt.git (browse, stats, fork on OrionHub)
Hudson JAXB Support org.eclipse.hudson.support.jaxb.git (browse, stats, fork on OrionHub)
Maven3 Plugin org.eclipse.hudson.plugins.maven3.git (browse, stats, fork on OrionHub)
Legacy Maven Plugin org.eclipse.hudson.plugins.legacy-maven.git (browse, stats, fork on OrionHub)
CVS Source Control Plugin org.eclipse.hudson.plugins.cvs.git (browse, stats, fork on OrionHub)
Subversion Source Contol Plugin org.eclipse.hudson.plugins.subversion.git (browse, stats, fork on OrionHub)
GIT Source Control Plugin org.eclipse.hudson.plugins.git.git (browse, stats, fork on OrionHub)
SSH Slaves Plugin org.eclipse.hudson.plugins.ssh-slaves.git (browse, stats, fork on OrionHub)
Test Harness org.eclipse.hudson.test.harness.git (browse, stats, fork on OrionHub)
Hudson Selenium Based UI Tests org.eclipse.hudson.test.ui.git (browse, stats, fork on OrionHub)
Hudson Tools to Create Native Installers org.eclipse.hudson.tools.packaging.git (browse, stats, fork on OrionHub)
Hudson Update Center Generator Tool org.eclipse.hudson.tools.updatecenter.git (browse, stats, fork on OrionHub)

Working with the Source

To work with a particular module click on the link above for the repository that you want to work with. On the summary tab of that page you will see a section towards the bottom of the page (labelled Clone) which provides the list of clone targets.

For example, Hudson Core clone targets are:

To work with the source you should clone the appropriate repository:

For committers:
git clone ssh://dmills@git.eclipse.org/gitroot/hudson/org.eclipse.hudson.core.git
Where dmills in this case is the committer Eclipse Id


For non-committers:
git clone http://git.eclipse.org/gitroot/hudson/org.eclipse.hudson.core.git

When cloning from behind a firewall remember to set your HTTP_PROXY appropriately.

git config http.proxy "http://proxy.example.com:80"

Procedures

For general information about GIT at Eclipse refer to the GIT page in Eclipsepedia. Thsi provides information on setting up SSH keys etc.

Submitting a patch for Non-Committers

Anyone is welcome to provide input into the Hudson project, the strict IP procedures of the Eclipse foundation do mean, however, that the repositories are not open to all for random commits. If you are not yet an Eclipse committer then any code or patch that you want to contribute will need to be attached to an Eclipse BugZilla record so that it's provinance can be tracked. If in doubt about what to do, just send a mail to the Developer List.


Building the Patch

Let's suppose that you notice an incorrect URL in one of the help topics in the Hudson configuration page
git clone http://git.eclipse.org/gitroot/hudson/org.eclipse.hudson.core.git

First ensure that git knows who you are (Important as this information will be included in the patch)

git config user.name "<Your Name>" 
git config user.email "<your_email@example.com>" 

Then edit the file to correct the problem and test your changes of course. Once happy:

Double check the files marked as changed:
git status

Add the changed file and generate the patch

git add file_you_tweaked 
git commit -m "Amended broken URL" 
git format-patch origin 

This will report back a patch file name e.g. Amended-broken-URL.patch which will be present in the directory that you generated the patch for. Attach this file to the relevant BugZilla record.

Becoming a Committer

Background Information

Back to the top