Groovy: définition de la Méthode ne devrait pas ici

Je suis sûr que c'est une solution simple, mais je suis de nouveau à la programmation en général et Groovy en particulier.

Je suis en train de suivre ce guide de slack permettre les notifications dans un Jenkins 2 pipeline de travail, mais le collage et la personnalisation de la finale de bloc de code qui me donne l'erreur suivante;

Method definition not expected here. Please define the method at an appropriate place or perhaps try using a block/Closure instead.

C'est mon code pour l'instant, sauf que j'ai remplacé quelques bits pour la sécurité. L'erreur se produit à la def notifyBuild(String buildStatus = 'STARTED') { ligne.

node('on-demand-t2large'){
    stage ('Checkout') {
        checkout( checkout stuff here )
    }

    stage ('Build') {
        try {
            notifyBuild('STARTED')

            dir("place") {
                sh 'script name'
            } 
        }
        catch (e) {
            //If there was an exception thrown, the build failed
            currentBuild.result = "FAILED"
            throw e
        } 
        finally {
            //Success or failure, always send notifications
            notifyBuild(currentBuild.result)
        }

        def notifyBuild(String buildStatus = 'STARTED') {
            //build status of null means successful
            buildStatus =  buildStatus ?: 'SUCCESSFUL'

            //Default values
            def colorName = 'RED'
            def colorCode = '#FF0000'
            def subject = "${buildStatus}: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'"
            def summary = "${subject} (${env.BUILD_URL})"
            def details = """<p>STARTED: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]':</p>
            <p>Check console output at &QUOT;<a href='${env.BUILD_URL}'>${env.JOB_NAME} [${env.BUILD_NUMBER}]</a>&QUOT;</p>"""

            //Override default values based on build status
            if (buildStatus == 'STARTED') {
                color = 'YELLOW'
                colorCode = '#FFFF00'
            } else if (buildStatus == 'SUCCESSFUL') {
                color = 'GREEN'
                colorCode = '#00FF00'
            } else {
                color = 'RED'
                colorCode = '#FF0000'
            }

            //Send notifications
            slackSend (channel: '@me', color: colorCode, message: summary)
        }
    } 
}

Je comprends à partir d'une recherche sur google que groovy n'accepte pas l'intérieur de la définition de classe, mais aussi nouveau que je suis à la programmation, je ne sais pas comment le résoudre. Toute aide (avec des explications pour que je puisse apprendre!) serait appréciée.

Je suggère de déplacer votre notifyBuild() définition de la méthode de l'extérieur de la node et stage hiérarchie. Qui est, prendre le dernier deux renforts au bas } } et de les déplacer jusqu'à la ligne du dessus def notifyBuild(.... Laissez le tiers bas chevillère où il est.
Qui l'a fait! Merci beaucoup!

OriginalL'auteur Alex | 2016-11-29