pipeline {
    agent {
        label 'docs'
    }
    options {
        timestamps()
        ansiColor('xterm')
        timeout(time: 2, unit: 'HOURS')
    }
    environment {
        PYENV_ROOT = "/usr/local/pyenv"
        PATH = "$PYENV_ROOT/bin:$PATH"
        PY_COLORS = 1
    }
    stages {
        stage('github-pending') {
            steps {
                githubNotify credentialsId: 'test-jenkins-credentials',
                    description: 'Testing docs...',
                    status: 'PENDING',
                    context: "jenkins/pr/docs"
            }
        }
        stage('setup') {
            steps {
                sh 'eval "$(pyenv init -)"; pyenv install 2.7.14 || echo "We already have this python."; pyenv local 2.7.14; pyenv shell 2.7.14'
                sh 'eval "$(pyenv init -)"; pip install sphinx -e .'
            }
        }
        stage('build') {
            steps {
                sh 'eval "$(pyenv init -)"; make SPHINXOPTS="-W" -C doc clean html'
            }
        }
    }
    post {
        always {
            cleanWs()
        }
        success {
            githubNotify credentialsId: 'test-jenkins-credentials',
                description: 'The docs job has passed',
                status: 'SUCCESS',
                context: "jenkins/pr/docs"
        }
        failure {
            githubNotify credentialsId: 'test-jenkins-credentials',
                description: 'The docs job has failed',
                status: 'FAILURE',
                context: "jenkins/pr/docs"
            slackSend channel: "#jenkins-prod-pr",
                color: '#FF0000',
                message: "FAILED: PR-Job: '${env.JOB_NAME} [${env.BUILD_NUMBER}]' (${env.BUILD_URL})"
        }
    }
}
