Search code examples
continuous-integrationjenkins-pipelinejenkins-groovy

No such DSL method 'steps' found among steps


I'm trying to post to a Slack channel whenever CI fails using a groovy script. But however when I try to implement this inside failure block I'm getting this error

Error when executing failure post condition:
java.lang.NoSuchMethodError: No such DSL method 'steps' found among steps [archive, bat, build, catchError, checkout, deleteDir, dir, dockerFingerprintFrom, dockerFingerprintRun, echo, envVarsForTool, error, fileExists, getContext, git, input, isUnix, junit, library, libraryResource, load, lock, mail, milestone, node, parallel

However, I was able to apply this same code to send Slack notifications in other pipelines under stages blocks. Looks as if it's having issues when applied to post block.

post {
      always {
        cleanWs()
      }
      failure {
        steps {
          slackSend baseUrl: 'https://hooks.slack.com/services/',
          channel: '#build-failures',
          iconEmoji: '',
          message: "CI failing for - #${env.BRANCH_NAME} - ${currentBuild.currentResult}  (<${env.BUILD_URL}|Open>)",
          teamDomain: 'differentau',
          tokenCredentialId: 'slack-token-build-failures',
          username: ''
        }
      }
    }

Solution

  • this should work:

    post {
          always {
            cleanWs()
          }
          failure {
              slackSend baseUrl: 'https://hooks.slack.com/services/',
              channel: '#build-failures',
              iconEmoji: '',
              message: "CI failing for - #${env.BRANCH_NAME} - ${currentBuild.currentResult}  (<${env.BUILD_URL}|Open>)",
              teamDomain: 'differentau',
              tokenCredentialId: 'slack-token-build-failures',
              username: ''
            }
        }