-
Notifications
You must be signed in to change notification settings - Fork 67
/
Jenkinsfile
113 lines (113 loc) · 4.12 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
pipeline {
agent none
stages {
stage('Check Formatting') {
environment {
CARGO_HOME = '/home/jenkins/.cargo'
RUSTUP_HOME = '/home/jenkins/.rustup'
RUSTFLAGS = "-D warnings"
}
agent {
label 'linux'
}
steps {
echo 'Checking formatting...'
sh '$CARGO_HOME/bin/cargo fmt -- --check'
}
}
stage('Run Clippy') {
environment {
CARGO_HOME = '/home/jenkins/.cargo'
RUSTUP_HOME = '/home/jenkins/.rustup'
RUSTFLAGS = "-D warnings"
}
agent {
label 'linux'
}
steps {
echo 'Running Clippy...'
sh '$CARGO_HOME/bin/cargo clippy --all --all-features -- -D warnings'
}
}
stage('Run Tests') {
parallel {
stage("Test on Windows") {
environment {
CARGO_HOME = 'C:\\Users\\root\\.cargo'
RUSTUP_HOME = 'C:\\Users\\root\\.rustup'
}
agent {
label 'windows'
}
steps {
echo 'Cleaning...'
bat 'C:\\Users\\root\\.cargo\\bin\\cargo clean'
echo 'Beginning tests...'
bat 'C:\\Users\\root\\.cargo\\bin\\cargo test --features="tester"'
echo 'Tests done!'
}
}
stage("Test on Linux") {
environment {
CARGO_HOME = '/home/jenkins/.cargo'
RUSTUP_HOME = '/home/jenkins/.rustup'
}
agent {
label 'linux'
}
steps {
echo 'Cleaning...'
sh '/home/jenkins/.cargo/bin/cargo clean'
echo 'Beginning tests...'
sh '/home/jenkins/.cargo/bin/cargo test --features="tester"'
echo 'Tests done!'
}
}
// Skip macOS stage for now until we can get a stable machine to run on
/* stage("Test on macOS") {
environment {
CARGO_HOME = '/Users/jenkins/.cargo'
RUSTUP_HOME = '/Users/jenkins/.rustup'
}
agent {
label 'mac'
}
steps {
echo 'Cleaning...'
sh '/Users/jenkins/.cargo/bin/cargo clean'
echo 'Beginning tests...'
sh '/Users/jenkins/.cargo/bin/cargo test --features="tester"'
echo 'Tests done!'
}
} */
}
}
stage('Calculate Coverage') {
environment {
CARGO_HOME = '/home/jenkins/.cargo'
RUSTUP_HOME = '/home/jenkins/.rustup'
RUSTFLAGS = "-D warnings"
}
agent {
label 'linux'
}
steps {
withCredentials([string(credentialsId: 'codecov_token', variable: 'CODECOV_TOKEN')]) {
echo 'Calculating code coverage...'
sh 'for file in target/debug/laminar-[a-f0-9]*[^\\.d]; do mkdir -p \"target/cov/$(basename $file)\"; kcov --exclude-pattern=/.cargo,/usr/lib --verify \"target/cov/$(basename $file)\" \"$file\"; done'
echo "Uploading coverage..."
sh "curl -s https://codecov.io/bash | bash -s - -t $CODECOV_TOKEN"
echo "Uploaded code coverage!"
}
}
}
stage('Publish book') {
when {
branch 'master'
}
steps{
echo 'Uploading book here'
}
}
}
}