pipeline {

  agent {
    docker { image 'golang:1.11' }
  }

  stages {

    stage('Prepare environment') {
      steps {
        script {
          sh 'make install-devtools'
          sh 'make vendor'
        }
      }
    }

    stage('Run unit tests') {
      steps {
        script {
          sh 'make test'
        }
      }
    }

    stage('Run lint') {
      steps {
        script {
          try {
            sh 'make LINT_ARGS="--new-from-rev=HEAD~" lint'
          } catch(ex) {
            currentBuild.result = "UNSTABLE"
          }
        }
      }
    }

  }

  post {
    always {
      script {
        if (currentBuild.currentResult != 'SUCCESS') {
          emailext (
            subject: "${currentBuild.currentResult} - Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]'",
            body: """
            Voir les étapes du job: ${env.BUILD_URL}flowGraphTable

            Projet: ${env.GIT_URL}
            Branche: ${env.GIT_BRANCH}
            Commit: ${env.GIT_COMMIT}
            """,
            recipientProviders: [developers(), requestor()],
          )
        }
      }
    }
  }
}