Skip to content
Snippets Groups Projects
Jenkinsfile 13.1 KiB
Newer Older
def runPythonTests() {
    ansiColor('gnome-terminal') {
        sshagent(credentials: ['jenkins-worker'], ignoreMissing: true) {
            checkout changelog: false, poll: false, scm: [$class: 'GitSCM', branches: [[name: '${sha1}']],
                doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [],
                userRemoteConfigs: [[credentialsId: 'jenkins-worker',
                refspec: '+refs/heads/*:refs/remotes/origin/* +refs/pull/*:refs/remotes/origin/pr/*',
                url: 'git@github.com:edx/edx-platform.git']]]
            console_output = sh(returnStdout: true, script: 'bash scripts/all-tests.sh').trim()
            dir('stdout') {
                writeFile file: "${TEST_SUITE}-${SHARD}-stdout.log", text: console_output
            }
            stash includes: 'reports/**/*coverage*', name: "${TEST_SUITE}-${SHARD}-reports"
        }
    }
}

def savePythonTestArtifacts() {
    archiveArtifacts allowEmptyArchive: true, artifacts: 'reports/**/*,test_root/log/**/*.log,**/nosetests.xml,stdout/*.log,*.log'
    junit '**/nosetests.xml'
}

pipeline {

    agent { label "coverage-worker" }

    options {
        timestamps()
        timeout(75)
    }

    stages {
        stage('Run Tests') {
            parallel {
                stage('lms-unit-1') {
                    agent { label "jenkins-worker" }
                    environment {
                        SHARD = 1
                        TEST_SUITE = 'lms-unit'
                    }
                    steps {
                        script {
                            runPythonTests()
                        }
                    }
                    post {
                        always {
                            script {
                                savePythonTestArtifacts()
                            }
                        }
                    }
                }
                stage('lms-unit-2') {
                    agent { label "jenkins-worker" }
                    environment {
                        SHARD = 2
                        TEST_SUITE = 'lms-unit'
                    }
                    steps{
                        script {
                            runPythonTests()
                        }
                    }
                    post {
                        always {
                            script {
                                savePythonTestArtifacts()
                            }
                        }
                    }
                }
                stage('lms-unit-3') {
                    agent { label "jenkins-worker" }
                    environment {
                        SHARD = 3
                        TEST_SUITE = 'lms-unit'
                    }
                    steps {
                        script {
                            runPythonTests()
                        }
                    }
                    post {
                        always {
                            script {
                                savePythonTestArtifacts()
                            }
                        }
                    }
                }
                stage('lms-unit-4') {
                    agent { label "jenkins-worker" }
                    environment {
                        SHARD = 4
                        TEST_SUITE = 'lms-unit'
                    }
                    steps {
                        script {
                            runPythonTests()
                        }
                    }
                    post {
                        always {
                            script {
                                savePythonTestArtifacts()
                            }
                        }
                    }
                }
                stage('lms-unit-5') {
                    agent { label "jenkins-worker" }
                    environment {
                        SHARD = 5
                        TEST_SUITE = 'lms-unit'
                    }
                    steps {
                        script {
                            runPythonTests()
                        }
                    }
                    post {
                        always {
                            script {
                                savePythonTestArtifacts()
                            }
                        }
                    }
                }
                stage('lms-unit-6') {
                    agent { label "jenkins-worker" }
                    environment {
                        SHARD = 6
                        TEST_SUITE = 'lms-unit'
                    }
                    steps {
                        script {
                            runPythonTests()
                        }
                    }
                    post {
                        always {
                            script {
                                savePythonTestArtifacts()
                            }
                        }
                    }
                }
                stage('lms-unit-7') {
                    agent { label "jenkins-worker" }
                    environment {
                        SHARD = 7
                        TEST_SUITE = 'lms-unit'
                    }
                    steps {
                        script {
                            runPythonTests()
                        }
                    }
                    post {
                        always {
                            script {
                                savePythonTestArtifacts()
                            }
                        }
                    }
                }
                stage('lms-unit-8') {
                    agent { label "jenkins-worker" }
                    environment {
                        SHARD = 8
                        TEST_SUITE = 'lms-unit'
                    }
                    steps {
                        script {
                            runPythonTests()
                        }
                    }
                    post {
                        always {
                            script {
                                savePythonTestArtifacts()
                            }
                        }
                    }
                }
                stage('lms-unit-9') {
                    agent { label "jenkins-worker" }
                    environment {
                        SHARD = 9
                        TEST_SUITE = 'lms-unit'
                    }
                    steps {
                        script {
                            runPythonTests()
                        }
                    }
                    post {
                        always {
                            script {
                                savePythonTestArtifacts()
                            }
                        }
                    }
                }
                stage('lms-unit-10') {
                    agent { label "jenkins-worker" }
                    environment {
                        SHARD = 10
                        TEST_SUITE = 'lms-unit'
                    }
                    steps {
                        script {
                            runPythonTests()
                        }
                    }
                    post {
                        always {
                            script {
                                savePythonTestArtifacts()
                            }
                        }
                    }
                }
                stage('cms-unit-1') {
                    agent { label "jenkins-worker" }
                    environment {
                        SHARD = 1
                        TEST_SUITE = 'cms-unit'
                    }
                    steps {
                        script {
                            runPythonTests()
                        }
                    }
                    post {
                        always {
                            script {
                                savePythonTestArtifacts()
                            }
                        }
                    }
                }
                stage('cms-unit-2') {
                    agent { label "jenkins-worker" }
                    environment {
                        SHARD = 2
                        TEST_SUITE = 'cms-unit'
                    }
                    steps {
                        script {
                            runPythonTests()
                        }
                    }
                    post {
                        always {
                            script {
                                savePythonTestArtifacts()
                            }
                        }
                    }
                }
                stage('commonlib-unit-1') {
                    agent { label "jenkins-worker" }
                    environment {
                        SHARD = 1
                        TEST_SUITE = 'commonlib-unit'
                    }
                    steps {
                        script {
                            runPythonTests()
                        }
                    }
                    post {
                        always {
                            script {
                                savePythonTestArtifacts()
                            }
                        }
                    }
                }
                stage('commonlib-unit-2') {
                    agent { label "jenkins-worker" }
                    environment {
                        SHARD = 2
                        TEST_SUITE = 'commonlib-unit'
                    }
                    steps {
                        script {
                            runPythonTests()
                        }
                    }
                    post {
                        always {
                            script {
                                savePythonTestArtifacts()
                            }
                        }
                    }
                }
                stage('commonlib-unit-3') {
                    agent { label "jenkins-worker" }
                    environment {
                        SHARD = 3
                        TEST_SUITE = 'commonlib-unit'
                    }
                    steps {
                        script {
                            runPythonTests()
                        }
                    }
                    post {
                        always {
                            script {
                                savePythonTestArtifacts()
                            }
                        }
                    }
                }
            }
        }
        stage('Run coverage') {
            environment {
                CODE_COV_TOKEN = credentials('CODE_COV_TOKEN')
                TARGET_BRANCH = "origin/master"
                CI_BRANCH = "${ghprbSourceBranch}"
                SUBSET_JOB = "null" // Keep this variable until we can remove the $SUBSET_JOB path from .coveragerc
            }
            steps {
                ansiColor('gnome-terminal') {
                    sshagent(credentials: ['jenkins-worker'], ignoreMissing: true) {
                        checkout changelog: false, poll: false, scm: [$class: 'GitSCM', branches: [[name: '${sha1}']],
                            doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [],
                            userRemoteConfigs: [[credentialsId: 'jenkins-worker',
                            refspec: '+refs/heads/*:refs/remotes/origin/* +refs/pull/*:refs/remotes/origin/pr/*',
                            url: 'git@github.com:edx/edx-platform.git']]]
                        unstash 'lms-unit-1-reports'
                        unstash 'lms-unit-2-reports'
                        unstash 'lms-unit-3-reports'
                        unstash 'lms-unit-4-reports'
                        unstash 'lms-unit-5-reports'
                        unstash 'lms-unit-6-reports'
                        unstash 'lms-unit-7-reports'
                        unstash 'lms-unit-8-reports'
                        unstash 'lms-unit-9-reports'
                        unstash 'lms-unit-10-reports'
                        unstash 'cms-unit-1-reports'
                        unstash 'cms-unit-2-reports'
                        unstash 'commonlib-unit-1-reports'
                        unstash 'commonlib-unit-2-reports'
                        unstash 'commonlib-unit-3-reports'
                        sh "./scripts/jenkins-report.sh"
                    }
                }
            }
            post {
                always {
                    publishHTML([allowMissing: false, alwaysLinkToLastBuild: false, keepAll: true,
                        reportDir: 'reports', reportFiles: 'diff_coverage_combined.html',
                        reportName: 'Diff Coverage Report', reportTitles: ''])
                    publishHTML([allowMissing: false, alwaysLinkToLastBuild: false, keepAll: true,
                        reportDir: 'reports/cover', reportFiles: 'index.html',
                        reportName: 'Coverage.py Report', reportTitles: ''])
                }
            }
        }
    }
}