[JIRA] (JENKINS-60066) "when changeset" not working in P4 multibranch pipeline

0 views
Skip to first unread message

jesse@studiowildcard.com (JIRA)

unread,
Nov 5, 2019, 9:17:02 PM11/5/19
to jenkinsc...@googlegroups.com
Jesse Rapczak created an issue
 
Jenkins / Bug JENKINS-60066
"when changeset" not working in P4 multibranch pipeline
Issue Type: Bug Bug
Assignee: Unassigned
Components: p4-plugin
Created: 2019-11-05 21:16
Environment: Jenkins 2.203
P4-Plugin 1.10.6
Labels: pipeline p4-plugin
Priority: Blocker Blocker
Reporter: Jesse Rapczak

I am following this recent example and it does not seem to work for multibranch P4. All of the echo commands show that the changeset information is fully available, but the when changeset conditional never passes:
stage("Test changeset"){
when
stage("Test changeset"){
when

{ changeset "**/Jenkinsfile"}

steps

{ echo "The changeset test worked!!"}

}
stage("Display changeset?") {
steps {
script {
def changeLogSets = currentBuild.changeSets for (int i = 0; i < changeLogSets.size(); i++) {
def entries = changeLogSets[i].items for (int j = 0; j < entries.length; j++) {
def entry = entries[j]
echo "${entry.commitId} by ${entry.author} on ${new Date(entry.timestamp)}: ${entry.msg}" def files = new ArrayList(entry.affectedFiles) for (int k = 0; k < files.size(); k++) {
def file = files[k]
echo " ${file.editType.name} ${file.path}" }
}
}
}
}
Results:

[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Test changeset)
Stage "Test changeset" skipped due to when conditional
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Display changeset?)
[Pipeline] script
[Pipeline] {
[Pipeline] echo
66 by jesse on Tue Nov 05 03:40:41 PST 2019: Polling time adjust
[Pipeline] echo
 edit //streams/Dev-Jenkins/Jenkinsfile
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage

Is this a bug?

Add Comment Add Comment
 
This message was sent by Atlassian Jira (v7.13.6#713006-sha1:cc4451f)
Atlassian logo

jesse@studiowildcard.com (JIRA)

unread,
Nov 5, 2019, 9:18:03 PM11/5/19
to jenkinsc...@googlegroups.com
Jesse Rapczak updated an issue
Change By: Jesse Rapczak
I am following this recent example and it does not seem to work for multibranch P4. All of the echo commands show that the changeset information is fully available, but the when changeset conditional never passes:
stage("Test changeset") pipeline {   agent { label 'master' }  stages {
when
stage("Test changeset"){
        when { changeset "**/Jenkinsfile"}
            steps{ echo "The changeset test worked!!"}
        }
    stage("Display changeset?") {
      steps {
        script {
           def changeLogSets = currentBuild.changeSets           for (int i = 0; i < changeLogSets.size(); i++) {
           def entries = changeLogSets[i].items           for (int j = 0; j < entries.length; j++) {
               def entry = entries[j]
               echo "${entry.commitId} by ${entry.author} on ${new Date(entry.timestamp)}: ${entry.msg}"               def files = new ArrayList(entry.affectedFiles)               for (int k = 0; k < files.size(); k++) {
                   def file = files[k]
                   echo " ${file.editType.name} ${file.path}"               }
            }
           }
        }
      }
Results:
{noformat}

[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Test changeset)
Stage "Test changeset" skipped due to when conditional
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Display changeset?)
[Pipeline] script
[Pipeline] {
[Pipeline] echo
66 by jesse on Tue Nov 05 03:40:41 PST 2019: Polling time adjust
[Pipeline] echo
edit //streams/Dev-Jenkins/Jenkinsfile
[Pipeline] }
[Pipeline] // script
[Pipeline] }
[Pipeline] // stage{noformat}
Is this a bug?

jesse@studiowildcard.com (JIRA)

unread,
Nov 5, 2019, 9:19:02 PM11/5/19
to jenkinsc...@googlegroups.com
Jesse Rapczak updated an issue
I am following this recent example and it does not seem to work for multibranch P4. All of the echo commands show that the changeset information is fully available, but the when changeset conditional never passes:

{noformat}
pipeline {  agent { label 'master' }  stages {
   stage("Test changeset"){
        when { changeset "**/Jenkinsfile"}
            steps{ echo "The changeset test worked!!"}
        }
    stage("Display changeset?") {
      steps {
        script {
           def changeLogSets = currentBuild.changeSets           for (int i = 0; i < changeLogSets.size(); i++) {
           def entries = changeLogSets[i].items           for (int j = 0; j < entries.length; j++) {
               def entry = entries[j]
               echo "${entry.commitId} by ${entry.author} on ${new Date(entry.timestamp)}: ${entry.msg}"               def files = new ArrayList(entry.affectedFiles)               for (int k = 0; k < files.size(); k++) {
                   def file = files[k]
                   echo " ${file.editType.name} ${file.path}"               }
            }
           }
        }
      }
{noformat}

kwirth@perforce.com (JIRA)

unread,
Nov 6, 2019, 10:02:02 AM11/6/19
to jenkinsc...@googlegroups.com

kwirth@perforce.com (JIRA)

unread,
Nov 6, 2019, 10:02:02 AM11/6/19
to jenkinsc...@googlegroups.com
Karl Wirth commented on Bug JENKINS-60066
 
Re: "when changeset" not working in P4 multibranch pipeline

Hi Jesse Rapczak,

Thanks for highlighting this. I'll test here and get back to you with my findings.

kwirth@perforce.com (JIRA)

unread,
Nov 6, 2019, 5:33:02 PM11/6/19
to jenkinsc...@googlegroups.com

Original testing for pipeline and changeset.

kwirth@perforce.com (JIRA)

unread,
Nov 6, 2019, 6:13:02 PM11/6/19
to jenkinsc...@googlegroups.com

Hi Jesse Rapczak,

 for me if I submit the 'Jenkinsfile' to '//streams/main/Jenkinsfile' worked when I selected the sub branch (main) and chose 'Build now':

 

[Pipeline] { (Test changeset)
[Pipeline] echo
The changeset test worked!!
[Pipeline] }
[Pipeline] // stage
[Pipeline] stage
[Pipeline] { (Run script)
[Pipeline] script
[Pipeline] {
[Pipeline] echo
2094 by super on Wed Nov 06 17:43:54 UTC 2019: Edited
[Pipeline] echo
  edit //streams/main/Jenkinsfile
[Pipeline] echo
P4_CHANGELIST is NOW:
[Pipeline] echo
2094

This was with P4-Plugin 1.10.6 but Jenkins 1.176.1.

Are you running the test in the same way (build now) ? If you are then maybe it's Jenkins version related.

 

Note that I don't fully understand the Jenkins 'when' and 'changeset' syntax but I managed to refine my script so that it can match when I submit any file to the path '//streams/main/sub/...':

when { changeset "//streams/main/sub/**"}
    steps{ echo "You submitted to //streams/main/sub/..."}

or any file under any 'sub' directory:

 when { changeset "**/sub/**"} 
     steps{ echo "You submitted to //.../sub/..."}

 

kwirth@perforce.com (JIRA)

unread,
Nov 6, 2019, 6:16:02 PM11/6/19
to jenkinsc...@googlegroups.com
Karl Wirth updated an issue
 
Change By: Karl Wirth
Labels: P4_SUPPORT p4-plugin pipeline

kwirth@perforce.com (JIRA)

unread,
Nov 6, 2019, 6:17:02 PM11/6/19
to jenkinsc...@googlegroups.com
Karl Wirth edited a comment on Bug JENKINS-60066
 
Re: "when changeset" not working in P4 multibranch pipeline
Note: Original testing for pipeline and changeset was in JENKINS-58441 .

jesse@studiowildcard.com (JIRA)

unread,
Nov 6, 2019, 7:44:03 PM11/6/19
to jenkinsc...@googlegroups.com

I run it the same way you are, but I am on Jenkins 2.203. Are you able to test with that? I'm not sure how I could easily roll back our Jenkins to an earlier version but I can look into setting up a separate test environment if you are unable to check with latest.

Jesse

jesse@studiowildcard.com (JIRA)

unread,
Nov 6, 2019, 7:52:02 PM11/6/19
to jenkinsc...@googlegroups.com
Jesse Rapczak edited a comment on Bug JENKINS-60066
I run it the same way you are, but I am on Jenkins 2.203. Are you able to test with that? I'm not sure how I could easily roll back our Jenkins to an earlier 1.X version but I can look into setting up a separate test environment if you are unable to check with latest.

Jesse

jesse@studiowildcard.com (JIRA)

unread,
Nov 6, 2019, 7:59:03 PM11/6/19
to jenkinsc...@googlegroups.com
Jesse Rapczak edited a comment on Bug JENKINS-60066
I run it the same way you are, but I am on Jenkins 2.203. Are you able to test with that? I'm not sure how I could easily roll back our Jenkins to an earlier 1.X version but I can look into setting up a separate test environment if you are unable to check with latest.
I will actually try to roll back to the latest LTS release anyway (2.190.2).

Jesse

jesse@studiowildcard.com (JIRA)

unread,
Nov 6, 2019, 9:32:02 PM11/6/19
to jenkinsc...@googlegroups.com

I re-installed Jenkins LTS 2.190.2 and the behavior is exactly the same for me. I wonder if this is a Jenkins 1.x vs Jenkins 2.x issue as you say?

jesse@studiowildcard.com (JIRA)

unread,
Nov 6, 2019, 10:38:02 PM11/6/19
to jenkinsc...@googlegroups.com
Jesse Rapczak edited a comment on Bug JENKINS-60066
I re-installed Jenkins LTS 2.190.2 and the behavior is exactly the same for me as 2 . 203. I wonder if this is a Jenkins 1.x vs Jenkins 2.x issue as you say?

kwirth@perforce.com (JIRA)

unread,
Nov 7, 2019, 11:04:02 AM11/7/19
to jenkinsc...@googlegroups.com

Hi Jesse Rapczak - Thanks for trying. I'll spin up 2.190.2 and try it here.

kwirth@perforce.com (JIRA)

unread,
Nov 7, 2019, 5:35:02 PM11/7/19
to jenkinsc...@googlegroups.com

Hi Jesse Rapczak - Still working OK for me on a new P4D server on 2.190.2. Maybe this is an OS or sensitivity issue. If you would prefer these answers to be private please email the response to 'sup...@perforce.com' for my attention:

Please get me the output from:

(1) p4 -Ztag info

(2) p4 -Ztag streams

(3) p4 print //streams/Dev-Jenkins/Jenkinsfile

Also in your setup are you using folders to keep the multibranch pipeline in?

What OS is the Jenkins server running on?

What OS is the P4D server running on?

jesse@studiowildcard.com (JIRA)

unread,
Nov 7, 2019, 7:35:02 PM11/7/19
to jenkinsc...@googlegroups.com

I will send you the output privately via support alias. To answer your other questions:

I have setup the Multibranch pipeline using the default settings, for the most part. Jenkins has created a top-level job and inside of that are the branch jobs. Each job gets a generated P4 workspace of:

jenkins-${NODE_NAME}-${JOB_NAME}-${EXECUTOR_NUMBER}

Jenkins server OS is Windows 10 Pro

P4D server OS is P4D/LINUX26X86_64/2019.1/1865205 (2019/10/11)

kwirth@perforce.com (JIRA)

unread,
Dec 5, 2019, 5:41:02 PM12/5/19
to jenkinsc...@googlegroups.com

Just for anyone watching/finding this. Worked with Jesse and could not get '*/Jenkinsfile' to work, but did get '//DEPOT_NAME/*/Jenkinsfile' working. Windows Jenkins master connected to Linux P4d.

Note - Reason for using this - attempting to implement polling exclusions so (for example) artifact submits do not trigger the job.

kwirth@perforce.com (JIRA)

unread,
Dec 5, 2019, 5:42:02 PM12/5/19
to jenkinsc...@googlegroups.com
Karl Wirth edited a comment on Bug JENKINS-60066
Just for anyone watching/finding this. Worked with Jesse and could not get '

{code:java}
**/Jenkinsfile ' {code}
to work, but did get '

{code:java}
//DEPOT_NAME/**/Jenkinsfile ' {code}
working. Windows Jenkins master connected to Linux P4d.

+Note+ - Reason for using this - attempting to implement polling exclusions so (for example) artifact submits do not trigger the job.

kwirth@perforce.com (JIRA)

unread,
Dec 6, 2019, 2:39:01 PM12/6/19
to jenkinsc...@googlegroups.com

Confirm this is a bug/feature of a Jenkins Windows master. If I use

**/Jenkinsfile

it does not find the changeset. As far as I can see we are populating the record correctly so this needs to be raised with CloudBees. It's either a bug or quirk of the syntax.

kwirth@perforce.com (JIRA)

unread,
Dec 10, 2019, 10:44:03 AM12/10/19
to jenkinsc...@googlegroups.com
Karl Wirth updated an issue
Change By: Karl Wirth
Labels: P4_SUPPORT p4-plugin pipeline

kwirth@perforce.com (JIRA)

unread,
Dec 10, 2019, 10:44:03 AM12/10/19
to jenkinsc...@googlegroups.com
Karl Wirth assigned an issue to Unassigned
Change By: Karl Wirth
Assignee: Karl Wirth
Reply all
Reply to author
Forward
0 new messages