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.
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.
A maven is a build tool designed to manage dependencies and the software lifecycle. It is also designed to work with plugins that allow users to add other tasks to the standard compile, test, package, install, deploy tasks. Jenkins is designed for the purpose of implementing Continuous Integration (CI).
The Maven Plugin is a plugin that provides the capabilities to configure, build, and run Maven-based projects in Jenkins. This is a must pre-requisite for the integration of Maven with Jenkins.
Go to Dashboard > Manage Jenkins > Manage Plugins > Available and search for Maven, as shown below: On the next page, along with Maven Integration and Maven Invoker, you will see some additional dependencies getting installed, which are required for both plugins to work.
Take a look on Flexible Publish Plugin:
I think you can easily check your environment variable against required pattern
and trigger proper post build action (sorry, do not have deploy to maven)
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With