pipeline{
  agent { node{ label'master' }}
  options {
    // Limit build history with buildDiscarder option:
    // daysToKeepStr: history is only kept up to this many days.
    // numToKeepStr: only this many build logs are kept.
    // artifactDaysToKeepStr: artifacts are only kept up to this many days.
    // artifactNumToKeepStr: only this many builds have their artifacts kept.
    buildDiscarder(logRotator(numToKeepStr: "1"))
    // Enable timestamps in build log console
    timestamps()
    // Maximum time to run the whole pipeline before canceling it
    timeout(time: 10, unit: 'HOURS')
    // Use Jenkins ANSI Color Plugin for log console
    ansiColor('xterm')
    // Limit build concurrency to 1 per branch
    disableConcurrentBuilds()
  }
  stages
  {
    stage('Build image') {
      agent {
          docker {
              image 'xsangle/ci-yocto:focal'
              // args '-v /var/jenkins_home/workspace/ant-http:/var/jenkins_home/workspace/ant-http'
              reuseNode true
          }
      }
      steps {
        sh '''#!/bin/bash
        printenv
        # git submodule init
        git submodule update --init --depth 1
        cd poky
        source ./oe-init-build-env ../build
        cat conf/*.conf
        # bitbake -c cleanall gcc core-image-base
        bitbake core-image-base
        '''
      }
    }
    stage('Build SDK') {
      agent {
          docker {
              image 'xsangle/ci-yocto:focal'
              reuseNode true
          }
      }
      steps {
        sh '''#!/bin/bash
        cd poky
        source ./oe-init-build-env ../build
        # bitbake core-image-base -c populate_sdk
        '''
      }
    }
    stage('Archive') {
      steps {
        script {
            archiveArtifacts artifacts: 'build/tmp/deploy/images/,build/tmp/deploy/sdk/', fingerprint: true
        }
      }
    }
  }
}