Jenkins Maven Repository Server

Skip to end of metadata
Go to start of metadata

Plugin Information

Plugin ID repository Changes In Latest Release
Since Latest Release
Latest Release
Latest Release Date
Required Core
Dependencies
1.2
Jan 12, 2014
1.546
token-macro (version:1.7, optional)
promoted-builds (version:2.10, optional)
git (version:1.1.29)
maven-plugin (version:2.1)
Source Code
Issue Tracking
Maintainer(s)
GitHub
Open Issues
Nigel Magnay (id: magnayn)
Bastiaan Schaap (id: bjwschaap)
Usage Installations 2013-Apr 527
2013-May 504
2013-Jun 517
2013-Jul 546
2013-Aug 539
2013-Sep 539
2013-Oct 575
2013-Nov 600
2013-Dec 568
2014-Jan 618
2014-Feb 643
2014-Mar 676

This plug-in exposes project builds as a maven repository so the artifacts can be picked up by downstream builds or other systems.

Use in a Maven build pipeline

1. Add the following to the jenkins maven settings.xml file:

settings.xml
<profile>
   <id>upstream</id>
   <repositories>
      <repository>
         <id>upstream</id>
         <url>${env.Jenkins.Repository}</url>
         <releases>
             <enabled>true</enabled>
         </releases>
         <snapshots>
            <enabled>true</enabled>
         </snapshots>
      </repository>
    </repositories>
 <pluginRepositories>
    <pluginRepository>
          <id>upstream</id>
          <url>${env.Jenkins.Repository}</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
         </snapshots>
    </pluginRepository>
  </pluginRepositories>
</profile>
Add maven setting

Add -Pupstream to your maven 'goals and options' (e.g: -Pupstream clean install) to turn on the above profile.

Check the "Define Upstream Maven Repository" checkbox item

Set a specific project, or the project that caused this build.

Description

After installation, archived build artifacts of your Maven jobs will be available as a maven repository so that other tools or builds that understand maven repositories can use them directly, without having to upload them to a separate server first.

By Build
http://jenkins-server:port/plugin/repository/project/projectName/Build/buildNumber/repository

Thus an artifact from build 4 of project helloworld might be

http://jenkins-server:port/plugin/repository/project/helloworld/Build/4/repository/org/example/helloworld/1.0-SNAPSHOT/helloworld-1.0-SNAPSHOT.pom
By GIT SHA1

Alternatively, if your build was executed from source stored in a GIT repository, you can access it via the SHA1 id. The plugin will return the most recent successful build artifacts.

http://jenkins-server:port/plugin/repository/project/projectName/SHA1/buildSHA1/repository

Thus an artifact from build 4 of project helloworld might be

http://jenkins/plugin/repository/helloworld/SHA1/f9a6ccb7fa31b6d88cd4ce0554d46aa4f3850425/repository/org/example/helloworld/1.0-SNAPSHOT/helloworld-1.0-SNAPSHOT.pom

http://jenkins-server:port/plugin/repository/project/helloworld/SHA1/f9a6ccb7fa31b6d88cd4ce0554d46aa4f3850425/repository/org/example/helloworld/1.0-SNAPSHOT/helloworld-1.0-SNAPSHOT.pom

This feature could be used (with an appropriate script) to allow a developer who checks out a particular branch, to automatically sync his local repository with the correctly built artifacts stored in jenkins. You can access the build without the project name:

http://jenkins-server:port/plugin/repository/SHA1/buildSha1

Therefore you could sync your repository with something like the following:

wget -e robots=off -P ~/.m2/repository -np -r -nH --cut-dirs=4 http://jenkins:8080/plugin/repository/SHA1/`git rev-parse HEAD`/
All Builds

A repository containing all build artifacts is available at

http://jenkins-server:port/plugin/repository/everything

Chained Builds

The above examples return repositories containing just the artifacts from the particular build. You can get access to a repository that also contains any upstream resources by substituting 'repository' for 'repositoryChain'. E.g:

http://jenkins-server:port/plugin/repository/project/projectName/Build/buildNumber/repositoryChain

 

Care is needed due to aliasing of artifacts if you have multiple projects generating artifacts with the same coordinate with the 'everything' and 'repositoryChain' modes.

Version History

0.9 Various fixes for content-type rendering, maven-metadata.xml generation, checksums and snapshot versions.
0.6

* New UI extension to simplify jobs that need to point to specific (typically upstream) repositories
* The repository now supports WebDAV, so it can be browsed/connected to by WebDAV clients
* Ships with a tools repository containing a maven plugin. This plugin can be used to synchronise a local machine with artifacts contained in a build in Jenkins.
0.5 Introduce an extension point
0.4 Fix resolving artifacts with different canonicalNames (e.g pom files)
0.3 * pom.xml artifacts renamed to artifact-version.pom (canonicalName)
* don't expose part-built project repositories
* New top-level repository, like 'everything', called 'SHA1' (so developers can wget build repo without having to know Jenkins project name)
* Add tokens for token-macro plugin of ${REPOSITORY_UPSTREAM} and ${REPOSITORY_UPSTREAM} which calculate the correct upstream repository url for the build in progress (based on the upstream build).
0.2 Updates to include requested LastSuccessful and 'everything', and also chained job repositories. Slightly adjusted URL space to add room for the everything repository.
0.1 Initial Release
   

 

Source Repository

git://github.com/magnayn/Jenkins-Repository.git

Labels

Edit
plugin-maven plugin-maven Delete
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.

Add Comment