pipeline {
    agent {
        node {
            label 'aws.ec2.eu.west.jenkins.build.slave'
        }
    }

    stages {
        stage('Startup') {
            steps {
                sh 'yarn install'
            }
        }
        stage('Test') {
            steps {
                sh 'yarn run test -u'
            }
        }
        stage('Build') {
            steps {
                sh 'yarn run build'
            }
        }
        stage('Upload site') {
            steps {
                sh 'yarn install'
                sh 'yarn run buildStorybook'
                script {
                    VERSION = sh(script: "yarn run -s getVersion", returnStdout: true).trim()
                }
                sshagent(credentials: ['acm-user']) {
                    sh "ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ubuntu@react-test.imtf-devops.com mkdir storybook/${VERSION}"
                    sh "scp -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -r .out/* ubuntu@react-test.imtf-devops.com:storybook/${VERSION}/"
                }
            }
        }
        stage('Publish') {
            steps {
                script {
                    sh "sed -i 's/npm-group/npm-private/1' .npmrc"
                    sh 'npm publish --access public'
                    TAGVERSION = sh(script: 'grep -w version package.json | cut -d\\" -f4', returnStdout: true).trim()
                }
                sh "git tag ${TAGVERSION}"
                sh "git push --tags"
            }
        }
    }
    post {
        cleanup {
            deleteDir()
        }
    }
}
