-
Notifications
You must be signed in to change notification settings - Fork 17
/
Jenkinsfile
126 lines (105 loc) · 3.74 KB
/
Jenkinsfile
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
122
123
124
#!/usr/bin/env groovy
// Used Jenkins plugins:
// * Pipeline GitHub Notify Step Plugin
// * Disable GitHub Multibranch Status Plugin
//
// This script expect following environment variables to be set:
//
// $OCP_HOSTNAME -- hostname of running Openshift cluster
// $OCP_USER -- Openshift user
// $OCP_PASSWORD -- Openshift user's password
//
// $EXTERNAL_DOCKER_REGISTRY -- address of a docker registry
// $EXTERNAL_DOCKER_REGISTRY_USER -- username to use to authenticate to specified docker registry
// $EXTERNAL_DOCKER_REGISTRY_PASSWORD -- password/token to use to authenticate to specified docker registry
def prepareTests() {
// wipeout workspace
deleteDir()
dir('oshinko-webui') {
checkout scm
sh('npm install')
sh('bower install')
}
// check golang version
sh('go version')
// download oc client
dir('client') {
sh('docker cp $(docker create docker.io/openshift/origin:v3.9):/bin/oc .')
}
// login to openshift instance
sh('oc login https://$OCP_HOSTNAME:8443 -u $OCP_USER -p $OCP_PASSWORD --insecure-skip-tls-verify=true')
// let's start on a specific project, to prevent start on a random project which could be deleted in the meantime
sh('oc project testsuite')
// start xvfb
sh('Xvfb -ac :99 -screen 0 1280x1024x16 &')
sh('sudo webdriver-manager update --gecko=false')
}
def buildUrl
def globalEnvVariables = ["WEBUI_TEST_EXTERNAL_REGISTRY=$EXTERNAL_DOCKER_REGISTRY", "WEBUI_TEST_EXTERNAL_USER=$EXTERNAL_DOCKER_REGISTRY_USER", "WEBUI_TEST_EXTERNAL_PASSWORD=$EXTERNAL_DOCKER_REGISTRY_PASSWORD", "DISPLAY=:99.0"]
node('radanalytics-test') {
stage('init') {
// generate build url
buildUrl = sh(script: 'curl https://url.corp.redhat.com/new?$BUILD_URL', returnStdout: true)
try {
githubNotify(context: 'jenkins-ci/oshinko-webui', description: 'This change is being built', status: 'PENDING', targetUrl: buildUrl)
} catch (err) {
echo("Wasn't able to notify Github: ${err}")
}
}
}
parallel testStandard: {
node('radanalytics-test') {
stage('Test standard') {
withEnv(globalEnvVariables + ["GOPATH=$WORKSPACE", "KUBECONFIG=$WORKSPACE/client/kubeconfig", "PATH+OC_PATH=$WORKSPACE/client"]) {
try {
prepareTests()
// run tests
dir('oshinko-webui') {
sh('make test-e2e | tee -a test-standard.log && exit ${PIPESTATUS[0]}')
}
} catch (err) {
try {
githubNotify(context: 'jenkins-ci/oshinko-webui', description: 'There are test failures', status: 'FAILURE', targetUrl: buildUrl)
} catch (errNotify) {
echo("Wasn't able to notify Github: ${errNotify}")
}
throw err
} finally {
dir('oshinko-webui') {
archiveArtifacts(allowEmptyArchive: true, artifacts: 'test-standard.log')
}
}
}
}
}
}, testSecure: {
node('radanalytics-test') {
stage('Test secure') {
withEnv(globalEnvVariables + ["GOPATH=$WORKSPACE", "KUBECONFIG=$WORKSPACE/client/kubeconfig", "PATH+OC_PATH=$WORKSPACE/client", "WEBUI_TEST_SECURE_USER=$OCP_USER", "WEBUI_TEST_SECURE_PASSWORD=$OCP_PASSWORD"]) {
try {
prepareTests()
// run tests
dir('oshinko-webui') {
sh('make test-e2e-secure | tee -a test-secure.log && exit ${PIPESTATUS[0]}')
}
} catch (err) {
try {
githubNotify(context: 'jenkins-ci/oshinko-webui', description: 'There are test failures', status: 'FAILURE', targetUrl: buildUrl)
} catch (errNotify) {
echo("Wasn't able to notify Github: ${errNotify}")
}
throw err
} finally {
dir('oshinko-webui') {
archiveArtifacts(allowEmptyArchive: true, artifacts: 'test-secure.log')
}
}
}
}
}
}
try {
githubNotify(context: 'jenkins-ci/oshinko-webui', description: 'This change looks good', status: 'SUCCESS', targetUrl: buildUrl)
} catch (err) {
echo("Wasn't able to notify Github: ${err}")
}