Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-37991

jenkins-dsl-plugin gradle test fails when using new slackNotifier syntax

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Won't Fix
    • Icon: Minor Minor
    • job-dsl-plugin
    • Jenkins ver. 1.658
      Job-DSL ver. 1.48
      Slack Notification Plugin 2.0.1

      I have a seed job definition which is failing gradle test even though it seems to work fine when we use it in Jenkins.

      //package master
      // GitURL
      def gitUrl = 'https://github.com/team/myapp'
      def slackRoom = null
      
      job('seed-dsl') {
          description('This seed is updated from the seed-dsl-updater job')
          properties {
              //Set github project URL
              githubProjectUrl(gitUrl)
          }
          ...
          // publishers is another name for post build steps
          publishers {
              mailer('', false, true)
              slackNotifier {
                  room(slackRoom)
                  notifyAborted(true)
                  notifyFailure(true)
                  notifyNotBuilt(true)
                  notifyUnstable(true)
                  notifyBackToNormal(true)
                  notifySuccess(false)
                  notifyRepeatedFailure(false)
                  startNotification(false)
                  includeTestSummary(false)
                  includeCustomMessage(false)
                  customMessage(null)
                  buildServerUrl(null)
                  sendAs(null)
                  commitInfoChoice('NONE')
                  teamDomain(null)
                  authToken(null)
              }
          }
      }
      

      The gradle test command works fine when I comment out the with the slackNotifier declaration, but fail with the following error when it's enabled:

      test fail excerpt
      Caused by:
              javaposse.jobdsl.dsl.DslScriptException: (script, line 79) No signature of method: javaposse.jobdsl.dsl.helpers.publisher.PublisherContext.slackNotifier() is applicable for argument types: (script$_run_closure1$_closure9$_closure14) values: [script$_run_closure1$_closure9$_closure14@d2392a1]
              Possible solutions: stashNotifier(), stashNotifier(groovy.lang.Closure)
                  at javaposse.jobdsl.dsl.DslScriptLoader.runScriptEngine(DslScriptLoader.groovy:135)
                  at javaposse.jobdsl.dsl.DslScriptLoader.runScriptsWithClassLoader_closure1(DslScriptLoader.groovy:78)
      

      full output

      According to the migration doc, slackNotifer has been supported since 1.47. In my gradle.build, I'm using 1.48. I see the same errors with plugin version 1.50

      gradle.build
      ext {
       jobDslVersion = '1.48'
       ...
      }
      ...
      // Job DSL plugin including plugin dependencies
      testCompile "org.jenkins-ci.plugins:job-dsl:${jobDslVersion}"
      testCompile "org.jenkins-ci.plugins:job-dsl:${jobDslVersion}@jar"
      ...
      

      The gradle.build also includes the following, as suggested by the testing docs.

      testPlugins 'org.jenkins-ci.plugins:slack:2.0.1'
      

      To reproduce:
      Download the seed job into the jobs directory, and run gradle test with the slackNotifier directive enabled. Comment out the slackNotifier directive and observe passing tests.

      Note: The job definition fails when ran on the DSL playground, as well.

            daspilker Daniel Spilker
            cvvs C WS
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: