Gitflow and triggering snapshot dependencies for maven multimodule builds

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Gitflow and triggering snapshot dependencies for maven multimodule builds

Richard Hierlmeier

I try to setup Jenkins Job for a Maven multimodule build. The development team likes to follow a gitflow workflow.
  • We use a Bitbucket Team Project
  • We have a develop branch that builds and deploys the SNAPSHOT versions to nexus.
  • Each feature is developed in a separate feature branch. The feature branches only install, but do not deploy the artifacts.
  • It is normal that the poms of the feature branch has the same version number as the branch of the develop branch.

Is setup the following pipeline for this job:

def branchType = getBranchType "${env.BRANCH_NAME}"

def buildGoals = "clean install"
if (branchType == "dev") {
    buildGloals
= "clean deploy"
}

pipeline
{
    agent
{
        node
{ label 'maven' }
   
}
    triggers
{
        upstream
(upstreamProjects: 'Nightly Build Trigger', threshold: hudson.model.Result.SUCCESS)
        snapshotDependencies
()
   
}
    stages
{
        stage
('Build and Deploy') {
            steps
{
                withMaven
(
                        mavenLocalRepo: '.repository'
                       
) {
                            sh "mvn ${buildGoals}"
                       
}
           
}
       
}
   
}
}


In the config of the Bitbucket Team Project I selected the option "" in the section ""Scan Organization Folder Triggers":









My multi module build has two artifacts: A 1.0.0-SNAPSHOT and B 1.0.0-SNAPSHOT. B depends on A.
The version numbers in the feature branch and in the develop branch are equal.

I run now the in the following problem:

Build of develop branch builds A 1.0.0-SNAPSHOT  -> Build of feature branch is triggered, because module B has module A 1.0.0-SNAPSHOT as dependency
Build of feature branch builds A 1.0.0-SNAPSHOT -> Build of develop branch is triggered, because moduel B has module A 1.0.0-SNAPSHOT as dependnecy.

We have an infinite loop.

How can we avoid this situation?

I tried the following:

triggers {
  
upstream(upstreamProjects: 'Nightly Build Trigger', threshold: hudson.model.Result.SUCCESS)
   if (branchType == "dev" ) {      

      snapshotDependencies()
   }
}

But I get a syntax error.












--
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/2595ab4c-bc87-427c-bc1d-51e8630f7716%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|

Re: Gitflow and triggering snapshot dependencies for maven multimodule builds

Richard Hierlmeier

It seems that this is a known problem. I found the following Jira issue: JENKINS-47996


Am Freitag, 12. Januar 2018 11:55:22 UTC+1 schrieb Richard Hierlmeier:

I try to setup Jenkins Job for a Maven multimodule build. The development team likes to follow a gitflow workflow.
  • We use a Bitbucket Team Project
  • We have a develop branch that builds and deploys the SNAPSHOT versions to nexus.
  • Each feature is developed in a separate feature branch. The feature branches only install, but do not deploy the artifacts.
  • It is normal that the poms of the feature branch has the same version number as the branch of the develop branch.

Is setup the following pipeline for this job:

def branchType = getBranchType "${env.BRANCH_NAME}"

def buildGoals = "clean install"
if (branchType == "dev") {
    buildGloals
= "clean deploy"
}

pipeline
{
    agent
{
        node
{ label 'maven' }
   
}
    triggers
{
        upstream
(upstreamProjects: 'Nightly Build Trigger', threshold: hudson.model.Result.SUCCESS)
        snapshotDependencies
()
   
}
    stages
{
        stage
('Build and Deploy') {
            steps
{
                withMaven
(
                        mavenLocalRepo: '.repository'
                       
) {
                            sh "mvn ${buildGoals}"
                       
}
           
}
       
}
   
}
}


In the config of the Bitbucket Team Project I selected the option "" in the section ""Scan Organization Folder Triggers":

<a href="https://lh3.googleusercontent.com/-CQE9AmGqVvQ/WliPUHju2tI/AAAAAAAAAJE/IFW4wFSY8Jcb1tU97hJf3BPj9EpjUm2AACEwYBhgL/s1600/2018-01-12%2B11_34_25-9999-998%2BGIT%2BFlow%2BTest%2BConfig%2B%255BJenkins%255D.png" style="clear:left;margin-bottom:1em;float:left;margin-right:1em" target="_blank" rel="nofollow" onmousedown="this.href=&#39;https://lh3.googleusercontent.com/-CQE9AmGqVvQ/WliPUHju2tI/AAAAAAAAAJE/IFW4wFSY8Jcb1tU97hJf3BPj9EpjUm2AACEwYBhgL/s1600/2018-01-12%2B11_34_25-9999-998%2BGIT%2BFlow%2BTest%2BConfig%2B%255BJenkins%255D.png&#39;;return true;" onclick="this.href=&#39;https://lh3.googleusercontent.com/-CQE9AmGqVvQ/WliPUHju2tI/AAAAAAAAAJE/IFW4wFSY8Jcb1tU97hJf3BPj9EpjUm2AACEwYBhgL/s1600/2018-01-12%2B11_34_25-9999-998%2BGIT%2BFlow%2BTest%2BConfig%2B%255BJenkins%255D.png&#39;;return true;">









My multi module build has two artifacts: A 1.0.0-SNAPSHOT and B 1.0.0-SNAPSHOT. B depends on A.
The version numbers in the feature branch and in the develop branch are equal.

I run now the in the following problem:

Build of develop branch builds A 1.0.0-SNAPSHOT  -> Build of feature branch is triggered, because module B has module A 1.0.0-SNAPSHOT as dependency
Build of feature branch builds A 1.0.0-SNAPSHOT -> Build of develop branch is triggered, because moduel B has module A 1.0.0-SNAPSHOT as dependnecy.

We have an infinite loop.

How can we avoid this situation?

I tried the following:

triggers {
  
upstream(upstreamProjects: 'Nightly Build Trigger', threshold: hudson.model.Result.SUCCESS)
   if (branchType == "dev" ) {      

      snapshotDependencies()
   }
}

But I get a syntax error.












--
You received this message because you are subscribed to the Google Groups "Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
To view this discussion on the web visit https://groups.google.com/d/msgid/jenkinsci-users/0c2ee633-ee7a-4ef1-929b-4167580b731b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.