This plugin wraps the server-side functionality of JGit so that other plugins can easily expose Git repositories from Jenkins via its SSH transport and HTTP in a collaborative fashion. This plugin is a library plugin, in the sense that it doesn't have any user visible feature on its own.
See Git userContent plugin as a nice and short example of how to take advantages of this feature.
In terms of code, there are two classes that plugins like git-userContent-plugin
should be interested in.
One is HttpGitRepository
, which represents Git repository access via HTTP. Typically you have some directory inside $JENKINS_HOME
that houses the repository, then you subtype GitHttpRepository
and override abstract methods to fill in the missing details. FileBackedHttpGitRepository
is a convenient default implementation that simplifies this further. GitUserContentRepository in git-userContent-plugin
is an example of using this class. This use also implements RootAction to bind this repository at http://server/jenkins/userContent.git
, and This combination is fairly common.
The other class of interest is RepositoryResolver
. Git server plugin adds necessary Jenkins SSH CLI hook for exposing Git repositories over SSH. The only missing link here is that when the client runs git clone ssh://server/foo/bar/zot.git
, we need to figure out what repositories on the server corresponds to /foo/bar/zot.git
, and that's what the RepositoryResolver
extension point does. The sample implementation in git-userContent-plugin
will be hopefully self-explanatory. In this case, GitUserContentRepository
is a singleton (because it's RootAction
), so we inject that and basically just delegate the calls to it.
- See GitHub Releases for recent releases
- See the Changelog Archive for versions 1.7 and older
Use Jenkins issue tracker to report issues or feature requests (project = JENKINS
, component = git-server-plugin
).