aboutsummaryrefslogtreecommitdiffstats
path: root/Jenkinsfile
blob: c56c0314486a566b9d0d1dc2612a9a497dacbac2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
@Library('SonarSource@2.1.1') _

pipeline {
    agent none
    parameters {
        string(name: 'GIT_SHA1', description: 'Git SHA1 (provided by travisci hook job)')
        string(name: 'CI_BUILD_NAME', defaultValue: 'sonar-css', description: 'Build Name (provided by travisci hook job)')
        string(name: 'CI_BUILD_NUMBER', description: 'Build Number (provided by travisci hook job)')
        string(name: 'GITHUB_BRANCH', defaultValue: 'master', description: 'Git branch (provided by travisci hook job)')
        string(name: 'GITHUB_REPOSITORY_OWNER', defaultValue: 'SonarSource', description: 'Github repository owner(provided by travisci hook job)')
    }
    environment {
        SONARSOURCE_QA = 'true'
        MAVEN_TOOL = 'Maven 3.3.x'
    }
    stages {
        stage('Notify') {
            steps {
                sendAllNotificationQaStarted()
            }
        }
        stage('QA') {
            parallel {
                stage('ITs-lts') {
                    agent {
                        label 'linux'
                    }
                    steps {
                        runITs "LATEST_RELEASE[6.7]"
                    }
                }

                stage('ITs-latest') {
                    agent {
                        label 'linux'
                    }
                    steps {
                        runITs "LATEST_RELEASE"
                    }
                }
                stage('ITs-windows') {
                    agent {
                        label 'windows'
                    }
                    steps {
                        runITs "LATEST_RELEASE"
                    }
                }
                stage('ITs-dev') {
                    agent {
                        label 'linux'
                    }
                    steps {
                        runITs "DEV"
                    }
                }

                stage('CI-windows') {
                    agent {
                        label 'windows'
                    }
                    steps {
                        withMaven(maven: MAVEN_TOOL) {
                            sh 'mvn.cmd clean test'
                        }
                    }
                }
            }
            post {
                always {
                    sendAllNotificationQaResult()
                }
            }
        }
        stage('Promote') {
            steps {
                repoxPromoteBuild()
            }
            post {
                always {
                    sendAllNotificationPromote()
                }
            }
        }
    }
}

def runITs(String sqRuntimeVersion) {
    withQAEnv {
        withMaven(maven: MAVEN_TOOL) {
            mavenSetBuildVersion()
            dir('its') {
                nodejs('NodeJS 10.4.1') {
                    def mvn = isUnix() ? 'mvn' : 'mvn.cmd'
                    sh "${mvn} ${itBuildArguments sqRuntimeVersion}"
                }
            }
        }
    }
}

def withQAEnv(def body) {
    checkout scm
    withCredentials([string(credentialsId: 'ARTIFACTORY_PRIVATE_API_KEY', variable: 'ARTIFACTORY_PRIVATE_API_KEY'),
                     usernamePassword(credentialsId: 'ARTIFACTORY_PRIVATE_USER', passwordVariable: 'ARTIFACTORY_PRIVATE_PASSWORD', usernameVariable: 'ARTIFACTORY_PRIVATE_USERNAME')]) {
        wrap([$class: 'Xvfb']) {
            body.call()
        }
    }
}

String itBuildArguments(String sqRuntimeVersion) {
    "-Pits -Dsonar.runtimeVersion=${sqRuntimeVersion} -Dorchestrator.artifactory.apiKey=${env.ARTIFACTORY_PRIVATE_API_KEY} " +
         "-Dorchestrator.configUrl=https://repox.sonarsource.com/orchestrator.properties/orch-h2.properties -Dmaven.test.redirectTestOutputToFile=false clean verify -e -V"
}