pipeline {
  agent any
  options { timeout(time: 60, unit: 'SECONDS') }
  stages {
    stage('Checkout and identify change') {
      steps {
        checkout scm
        echo "BRANCH_NAME=${env.BRANCH_NAME ?: ''}"
        echo "CHANGE_ID=${env.CHANGE_ID ?: ''}"
        echo "CHANGE_TARGET=${env.CHANGE_TARGET ?: ''}"
        script {
          def scenario = readFile('ci/scenario.txt').trim()
          if (!(scenario in ['success', 'unstable', 'failure'])) {
            error("Unsupported demo scenario: ${scenario}")
          }
          env.SCENARIO = scenario
        }
      }
    }
    stage('Build and report') {
      steps {
        script {
          int status = sh(script: 'sh ci/demo-build.sh', returnStatus: true)
          junit 'reports/*.xml'
          if (status != 0) error("Demo build exited with status ${status}")
        }
      }
    }
  }
  post {
    always { archiveArtifacts artifacts: 'artifacts/*', allowEmptyArchive: true }
  }
}
