#!/usr/bin/env groovy
//-------------------------------------------------------------------------------
// Copyright (c) 2020, Arm Limited and Contributors. All rights reserved.
//
// SPDX-License-Identifier: BSD-3-Clause
//
//-------------------------------------------------------------------------------

@Library('trustedfirmware') _
import org.trustedfirmware.Gerrit

timestamps {
  node("docker-amd64-tf-m-bionic") {
    stage("Init") {
      cleanWs()
      dir("tf-m-ci-scripts") {
        checkout([$class: 'GitSCM', branches: [[name: '$CI_SCRIPTS_BRANCH']], userRemoteConfigs: [[credentialsId: 'GIT_SSH_KEY', url: '$CI_SCRIPTS_REPO']]])
        // Clone TF-M repositories so share folder can be reused by downstream jobs
        sh "./clone.sh"
      }
    }
    try {
      verify = 1
      stage("Build") {
        sh "tf-m-ci-scripts/build-docs.sh"
      }
      stage("Post") {
        archiveArtifacts 'trusted-firmware-m/build/docs/**'
      }
    } catch (Exception e) {
      stage("Post") {
        archiveArtifacts 'trusted-firmware-m/build/**'
      }
      manager.buildFailure()
      verify = -1
    } finally {
      g = new Gerrit()
      g.verifyStatusInWorkspace(verify, "$JOB_NAME", 'build')
      def buildStatus = (verify == 1) ? 'Successful' : 'Failed'
      //g.commentInWorkspace("Build docs ${buildStatus}: ${env.RUN_DISPLAY_URL}")
      cleanWs()
    }
  }
  node("master") {
    if (env.JOB_NAME.contains("tf-m-build-docs-nightly")) {
      // Copy, then as atomically as possible replace previous docs with new.
      sh """
         cp -a /var/jenkins_home/jobs/$JOB_NAME/builds/$BUILD_NUMBER/archive/trusted-firmware-m/build/docs/reference_manual /var/jenkins_home/docs/reference_manual.new
         cp -a /var/jenkins_home/jobs/$JOB_NAME/builds/$BUILD_NUMBER/archive/trusted-firmware-m/build/docs/user_guide /var/jenkins_home/docs/user_guide.new
         rm -rf /var/jenkins_home/docs/reference_manual.old /var/jenkins_home/docs/user_guide.old
         mv /var/jenkins_home/docs/reference_manual /var/jenkins_home/docs/reference_manual.old
         mv /var/jenkins_home/docs/user_guide /var/jenkins_home/docs/user_guide.old
         mv /var/jenkins_home/docs/reference_manual.new /var/jenkins_home/docs/reference_manual
         mv /var/jenkins_home/docs/user_guide.new /var/jenkins_home/docs/user_guide
         """
    }
  }
}
