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
116
117
118
119
120
121
|
@Library('SonarSource@2.1.2') _
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.5.x'
JDK_VERSION = 'Java 11'
}
stages {
stage('Notify') {
steps {
sendAllNotificationQaStarted()
}
}
stage('QA') {
parallel {
stage('ITs-lts') {
agent {
label 'linux'
}
steps {
runITs "LATEST_RELEASE[7.9]"
}
}
stage('ITs-latest') {
agent {
label 'linux'
}
steps {
runITs "LATEST_RELEASE"
}
}
stage('ITs-windows') {
agent {
label 'windows'
}
steps {
runITs "LATEST_RELEASE"
}
}
stage('ITs-dogfood') {
agent {
label 'linux'
}
steps {
runITs "DOGFOOD"
}
}
stage('CI-windows') {
agent {
label 'windows'
}
steps {
withQAEnv {
withMaven(maven: MAVEN_TOOL) {
sh 'mvn.cmd clean test'
}
}
}
}
}
post {
always {
sendAllNotificationQaResult()
}
}
}
stage('Promote') {
steps {
repoxPromoteBuild()
}
post {
always {
sendAllNotificationPromote()
}
}
}
}
}
def runITs(String sqRuntimeVersion) {
withQAEnv {
nodejs(configId: 'npm-artifactory', nodeJSInstallationName: 'NodeJS latest') {
withMaven(maven: MAVEN_TOOL) {
mavenSetBuildVersion()
dir('its') {
def mvn = isUnix() ? 'mvn' : 'mvn.cmd'
sh "${mvn} ${itBuildArguments sqRuntimeVersion}"
}
}
}
}
}
def withQAEnv(def body) {
checkout scm
def javaHome = tool name: env.JDK_VERSION, type: 'hudson.model.JDK'
withEnv(["JAVA_HOME=${javaHome}"]) {
withCredentials([string(credentialsId: 'ARTIFACTORY_PRIVATE_API_KEY', variable: 'ARTIFACTORY_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_API_KEY} " +
"-Dorchestrator.configUrl=https://repox.jfrog.io/repox/orchestrator.properties/orch-h2.properties -Dmaven.test.redirectTestOutputToFile=false clean verify -e -V"
}
|