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 (archives)
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 2014-Mar 676
2014-Apr 686
2014-May 691
2014-Jun 699
2014-Jul 767
2014-Aug 753
2014-Sep 734
2014-Oct 745
2014-Nov 761
2014-Dec 754
2015-Jan 794
2015-Feb 811

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