Brian Matthews
Brian Matthews

Reputation: 8596

How can I configure Jenkins not to deploy to Maven repository unless I am performing a release build?

I have configured a Jenkins job to build a Maven 3 project and with the "Maven release build" plugin enabled and also added a post-build action to deploy the artifacts to a Nexus repository.

However, I don't want artifacts to be deployed unless the user had initiated the build by clicking the "Perform Maven Release" link instead of the "Build Now" button. When the click "Build Now" I just want a snapshot build that doesn't get deployed anywhere.

I understood from the documentation that I could use a environment variable called IS_M2RELEASEBUILD to control this behavior. This environment variable is set to true by the M2 Release Plugin when the build was initiated via the "Perform Maven release" link. But the post build action is completely ignoring this.

Jenkins Settings

I am using Jenkins LTS 1.509.3 and Maven 3.0.5.

UPDATE: Please note that I am not looking for a workaround using using the Maven Release Plugin within the POM. My goal is to create a single Jenkins job that acts as the CI build (without deploying the snapshot) triggered by check-ins and to be able to use the same job to perform a release build using the Jenkins M2 Release plugin.

Upvotes: 7

Views: 3521

Answers (3)

Peter Schuetze
Peter Schuetze

Reputation: 16305

My Comment to the question is apparently the answer. ;)

can't you add the deploy goal to the release goals? I would guess that it will then only be executed, if it is an release.

Upvotes: 1

Zac Thompson
Zac Thompson

Reputation: 12685

If you add the deploy action to the maven release goals then you don't need a separate step in the Jenkins job. These goals are only executed on release:perform. Something like:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-release-plugin</artifactId>
  <configuration>
    <goals>deploy</goals>
  </configuration>
</plugin>

Peter Schuetze answered this in the comments and should probably post this answer to get the bounty.

Upvotes: 1

Renat Gilmanov
Renat Gilmanov

Reputation: 17895

Take a look on Flexible Publish Plugin:

I think you can easily check your environment variable against required pattern

enter image description here

and trigger proper post build action (sorry, do not have deploy to maven)

enter image description here

Upvotes: 2

Related Questions