JobDSL + pipeline = the item has been changed?

148 views
Skip to first unread message

Nathan Flynn

unread,
Jul 19, 2017, 11:45:59 AM7/19/17
to job-dsl-plugin
Hello,

Every time I try and use JobDSL to make pipeline jobs It ends up saying;

 This item has been changed manually since it was generated by the seed job.



The error above only appears after I hit 'Build now" in the job, prior to this it does not have the warning.

I have this as my JobDSL code;

pipelineJob('example-1') {
    definition {
        cps {
            script(readFileFromWorkspace('jobs/pipeline/docker.groovy'))
            sandbox()
        }
    }
}

and then in jobs/pipeline/docker.groovy

pipeline {
    agent { label 'docker' }
  stages {
    stage ('SCM checkout') {
        steps {
            echo 'Hello World 1'
        }
    }
    stage ("Docker Build") {
        steps {
            echo 'Hello World 2'
        }
    }
    stage ('Docker basic test') {
        steps {
            echo "Goodbye world"
        }
    }
    stage ('Docker Vuln Scanner') {
        steps {
            echo "Goodbye world"
        }
    }
  }
}

Jenkins 2.60.1
JobDSL 1.64
Pipeline plugin: 2.5

Is this expected behaviour ? Is this how jobDSL is intended to create pipeline jobs?

Nathan Flynn

unread,
Jul 20, 2017, 7:03:42 AM7/20/17
to job-dsl-plugin
So a quick diff shows config changes;

14,17c14,20

<       <triggers>

<         <hudson.triggers.TimerTrigger>

<           <spec>H H/6 * * *</spec>

<         </hudson.triggers.TimerTrigger>

---

>       <triggers class="java.util.Collections$UnmodifiableRandomAccessList" resolves-to="java.util.Collections$UnmodifiableList">

>         <c class="list">

>           <hudson.triggers.TimerTrigger>

>             <spec>H H/6 * * *</spec>

>           </hudson.triggers.TimerTrigger>

>         </c>

>         <list reference="../c"/>

Nathan Flynn

unread,
Jul 20, 2017, 7:58:34 AM7/20/17
to job-dsl-plugin
Looking at the config XML files they changed on a build;

JobDSL outputs;
<?xml version="1.0" encoding="UTF-8"?><flow-definition>
    <actions/>
    <description/>
    <keepDependencies>false</keepDependencies>
    <properties/>
    <triggers/>
    <definition class="org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition">
        <script>
pipeline {
    agent { label 'docker' }
  stages {
    stage ('SCM checkout') {
        steps {
            echo 'Hello World 1'
        }
    }
    stage ("Docker Build") {
        steps {
            echo 'Hello World 2'
        }
    }
    stage ('Docker basic test') {
        steps {
            echo "Goodbye world"
        }
    }
    stage ('Docker Vuln Scanner') {
        steps {
            echo "Goodbye world"
        }
    }
  }
}
</script>
        <sandbox>true</sandbox>
    </definition>
</flow-definition>

When the job runs it results in

<?xml version='1.0' encoding='UTF-8'?>
<flow-definition plugin="workfl...@2.12.1">
  <actions>
    <org.jenkinsci.plugins.pipeline.modeldefinition.actions.DeclarativeJobPropertyTrackerAction plugin="pipeline-mod...@1.1.8">
      <jobProperties/>
      <triggers/>
      <parameters/>
    </org.jenkinsci.plugins.pipeline.modeldefinition.actions.DeclarativeJobPropertyTrackerAction>
  </actions>
  <description></description>
  <keepDependencies>false</keepDependencies>
  <properties>
    <org.jenkinsci.plugins.workflow.job.properties.PipelineTriggersJobProperty>
      <triggers/>
    </org.jenkinsci.plugins.workflow.job.properties.PipelineTriggersJobProperty>
  </properties>
  <definition class="org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition" plugin="workfl...@2.36.1">
    <script>
pipeline {
    agent { label &apos;docker&apos; }
  stages {
    stage (&apos;SCM checkout&apos;) {
        steps {
            echo &apos;Hello World 1&apos;
        }
    }
    stage (&quot;Docker Build&quot;) {
        steps {
            echo &apos;Hello World 2&apos;
        }
    }
    stage (&apos;Docker basic test&apos;) {
        steps {
            echo &quot;Goodbye world&quot;
        }
    }
    stage (&apos;Docker Vuln Scanner&apos;) {
        steps {
            echo &quot;Goodbye world&quot;
        }
    }
  }
}
</script>
    <sandbox>true</sandbox>
  </definition>
  <triggers/>
  <disabled>false</disabled>
</flow-definition>
Reply all
Reply to author
Forward
0 new messages