node {
  catchError {
    def maven = 'Maven 3.5'
    def java = 'Java Oracle 8'
    def version
    stage('Preparation') {
      deleteDir()
      copyArtifacts projectName: 'Silverpeas_Master_AutoDeploy',
          filter: 'org/silverpeas/core/*-build*/*.pom',
          flatten: true
      def files = findFiles glob: '*.pom'
      def pom = readMavenPom file: files[0].path
      version = pom.version
      echo "Coverity Analysis will be applied on Silverpeas ${version}"
    }
    stage('Silverpeas Core Analysis') {
      def project = 'Silverpeas-Core'
      def commit = getBuildCommit 'org/silverpeas/core/silverpeas-core'
      fetchFromGithub project, commit
      withMaven(jdk: java, maven: maven) {
        analyse project, version
      }
    }
    stage('Silverpeas Components Analysis') {
      def project = 'Silverpeas-Components'
      def commit = getBuildCommit 'org/silverpeas/components/almanach/silverpeas-almanach'
      fetchFromGithub project, commit
      withMaven(jdk: java, maven: maven) {
        analyse project, version
      }
    }
  }
  step([$class: 'Mailer',
        notifyEveryUnstableBuild: true,
        recipients: 'miguel.moquillon@silverpeas.org, silveryocha@chastagnier.com',
        sendToIndividuals: true])
}

def getBuildCommit(artifactPath) {
  deleteDir()
  copyArtifacts projectName: 'Silverpeas_Master_AutoDeploy',
      filter: "${artifactPath}/*-build*/*build??????.jar",
      flatten: true
  def files = findFiles glob: '*.jar'
  def manifest = readManifest file: files[0].path
  manifest.main['Git-Commit']
}

def fetchFromGithub(project, commit) {
  deleteDir()
  git credentialsId: 'cacc0467-7c85-41d1-bf4e-eaa470dd5e59', poll: false, url: "https://github.com/Silverpeas/${project}"
  sh "git checkout ${commit}"
}

def analyse(project, version) {
  sh """
cov-build --dir cov-int --config ~/.config/coverity/coverity-cfg.xml mvn clean install -Dmaven.test.skip=true -Djava.awt.headless=true
echo \$? -eq 0 && push-cov-analysis.sh ${project} ${version}
"""
  archiveArtifacts artifacts: '*-cov-int.tgz', onlyIfSuccessful: true
}


