@Library("cadoles") _

pipeline {

    agent {
        label 'common'
    }

    parameters {
        string(
            name: 'packageName', 
            description: 'Nom du paquet à installer'
        )
        string(
            name: 'packageVersion', 
            defaultValue: '', 
            description: 'Version du paquet à installer'
        )
        string(
            name: 'packageRepository',
            description: 'Dépôt de paquets à utiliser sur Vulcain'
        )
        string(
            name: 'vmTemplate',
            description: 'Template OpenNebula de la VM à utiliser pour le test d\'installation'
        )
    }

    stages {

        stage("Check parameters") {
            steps {
                script {
                    if (!params.url?.trim()) {
                        error("L'URL du paquet n'est pas définie !")
                    }
                }
            }
        }

        stage("Test URL") {
            steps {
                script {
                    def w3afImage = buildDockerImage()
                    def dockerArgs = """
                    """
                    tamarinImage.inside(dockerArgs) {
                        sh './w3af_console '
                    }
                }
            }
        }
    }

    post {
        failure {
            wrap([$class: 'BuildUser']) {
                rocketSend (
                    avatar: 'https://jenkins.cadol.es/static/b5f67753/images/headshot.png',
                    message: """
                    Le test de sécurité sur l'URL `${params.url}` a échoué:
                    
                    [Voir le job](${env.RUN_DISPLAY_URL})
                    
                    @${env.BUILD_USER_ID ? env.BUILD_USER_ID : 'here'}
                    """.stripIndent(),
                    rawMessage: true
                )
            }
        }
    }

}

def buildDockerImage() {
    dir ('.w3af') {
        def dockerfile = libraryResource 'com/cadoles/w3af/Dockerfile'
        writeFile file:'Dockerfile', text:dockerfile

        def audit = libraryResource 'com/cadoles/w3af/audit.w3af'
        writeFile file:'audit.w3af', text:audit
        
        def safeJobName = URLDecoder.decode(env.JOB_NAME).toLowerCase().replace('/', '-').replace(' ', '-')
        def imageTag = "${safeJobName}-${env.BUILD_ID}"
        return docker.build("w3af:${imageTag}", ".")
    }
}