def filename = 'manifest-${branch}.xml'

node ('master') {
       checkout changelog: false, poll: false, scm: [$class: 'RepoScm', currentBranch: true, manifestBranch: params.branch, manifestRepositoryUrl: 'https://gerrit.opencord.org/manifest', quiet: true]

       stage 'Generate and Copy Manifest file'
       sh returnStdout: true, script: 'repo manifest -r -o ' + filename
       sh returnStdout: true, script: 'cp ' + filename + ' ' + env.JENKINS_HOME + '/tmp'
}

timeout (time: 240) {
    node ("${targetVM}") {
       stage 'Checkout cord repo'
       checkout changelog: false, poll: false, scm: [$class: 'RepoScm', currentBranch: true, manifestBranch: params.branch, manifestRepositoryUrl: 'https://gerrit.opencord.org/manifest', quiet: true]

       dir('orchestration/xos-gui') {
            try {

                stage 'Install Node Modules'
                sh 'npm install'

                stage 'Check Code Style'
                sh 'npm run lint'

                stage 'Run Unit Tests'
                sh 'npm test'

                stage 'Build GUI docker container'
                sh 'docker pull nginx'
                sh 'docker tag nginx nginx:candidate'
                sh 'docker build --no-cache -t xosproject/xos-gui .'
                sh 'docker run -p 4000:4000 --net=host --name xos-gui -d xosproject/xos-gui'
            } catch (err) {
                currentBuild.result = 'FAILURE'
                step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: 'teo@onlab.us', sendToIndividuals: true])
            }
       }
       dir('build/platform-install') {
            stage 'Build Mock R-CORD Config'
            sh `ansible-playbook -i inventory/mock-rcord deploy-xos-playbook.yml`
       }
       dir('orchestration/xos-gui') {
            try {
                stage 'Run E2E Tests'
                sh 'UI_URL=127.0.0.1:4000/spa/#' protractor conf/protractor.conf.js
                currentBuild.result = 'SUCCESS'
            } catch (err) {
                currentBuild.result = 'FAILURE'
                step([$class: 'Mailer', notifyEveryUnstableBuild: true, recipients: 'teo@onlab.us', sendToIndividuals: true])
            } finally {
                stage 'Clean'
                sh 'docker stop xos-gui'
                sh 'docker rm xos-gui'
                sh 'docker rmi -f xosproject/xos-gui:latest'
                sh 'docker rmi -f nginx:candidate'
                sh 'docker rmi -f nginx:latest'
            }
       }
       dir('build/platform-install') {
            sh `ansible-playbook -i inventory/mock-rcord teardown-playbook.yml`
            echo "RESULT: ${currentBuild.result}"
       }
    }
}