-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjenkinsfile
135 lines (121 loc) · 2.53 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
125
126
127
128
129
130
131
132
133
134
135
#!/usr/bin/env groovy
def _nodeBlock(Closure body=null) {
def STATUS = 'UNSTABLE'
try {
if (body) { body() }
if (STATUS == 'UNSTABLE') {
STATUS = 'SUCCESS'
}
} catch(InterruptedException ie) {
STATUS = 'ABORTED'
throw e
} catch(e) {
STATUS = 'FAILURE'
throw e
}
finally {
step([$class: 'WsCleanup'])
}
echo "Result: ${STATUS}"
return STATUS
}
def checkTools() {
stage('Check Tools') {
for (item in [ 'npm', 'node', 'yarn', 'gulp', 'bower' ]) {
sh "${item} --version || exit 1"
}
}
}
def initEnv() {
stage('Init Env') { timeout(30) {
def code = 0
sh(
returnStatus: true,
script: 'npm set registry http://npm.dapigu.win'
)
// NPM Module Install
sh(
returnStatus: true,
script: 'yarn'
)
code = sh(
returnStatus: true,
script: 'npm install || npm rebuild'
)
if (code != 0) {
STATUS = 'FAILURE'
echo "${STATUS}: Modules Install Fail"
return STATUS
}
// Bower Module Install
// retry(3) { sh(
// returnStatus: true,
// script: 'bower install'
// ) }
// currentBuild.result = 'SUCCESS'
return true
} }
}
def test() {
def code = 0
stage('Test') { timeout(20) {
code = sh(
returnStatus: true,
script: 'gulp lint'
)
if (code != 0) {
STATUS = 'FAILURE'
echo "${STATUS}: Check Code Style Fail"
return STATUS
}
code = sh(
returnStatus: true,
script: 'gulp test'
)
if (code != 0) {
STATUS = 'FAILURE'
echo "${STATUS}: Code Test Fail"
return STATUS
}
code = sh(
returnStatus: true,
script: 'gulp test -t ray'
)
if (code != 0) {
STATUS = 'FAILURE'
echo "${STATUS}: Code Test Fail"
return STATUS
}
return STATUS
} }
}
def merge() { _nodeBlock {
checkTools()
if (initEnv() == true) {
return test()
} else {
return STATUS
}
} }
def push() { _nodeBlock {
checkTools()
initEnv()
test()
stage('Build') {
def code = 0
code = sh(
returnStatus: true,
script: 'gulp deploy || gulp'
)
if (code != 0) { STATUS = 'FAILURE' }
}
stage('Build by Ray Edition') {
def code = 0
code = sh(
returnStatus: true,
script: 'gulp deploy -t ray || gulp -t ray'
)
if (code != 0) { STATUS = 'FAILURE' }
}
} }
return this