-
Notifications
You must be signed in to change notification settings - Fork 57
/
Jenkinsfile
126 lines (124 loc) · 4.34 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
// Utility function to determine what python versions to build
def python3Versions() {
// Different version depending on the OS
String[] versions;
if (isUnix()) {
versions = ["3.7.16", "3.8.16", "3.9.16", "3.10.9", "3.11.1"];
} else {
versions = ["3.7.0", "3.8.0", "3.9.0", "3.10.0", "3.11.0"];
}
// If a PR build, just build the most recent, otherwise build all versions
if (BRANCH_NAME && (BRANCH_NAME == 'main' || BRANCH_NAME == 'master')) {
return versions.join(" ");
} else {
return versions.last();
}
}
pipeline {
agent none
options {
// Set a timeout for the whole pipeline. The timer starts when the project is queued
timeout(time: 3, unit: 'HOURS')
}
stages {
stage('Build') {
// Run the windows and linux builds in parallel
parallel {
stage('Windows x64') {
agent { label 'windows10' }
options {
skipDefaultCheckout()
timeout(time: 20, activity: true, unit: 'MINUTES')
}
steps {
cleanWs()
checkout scm
powershell '.devcontainer/docker_build_win.ps1 -arch x64 -python3_versions "' + python3Versions() + '"'
archiveArtifacts artifacts: 'build_windows_x64/*.zip'
archiveArtifacts artifacts: 'build_windows_x64_for_release/*.zip'
}
}
stage('Windows x86') {
agent { label 'windows10' }
options {
skipDefaultCheckout()
timeout(time: 20, activity: true, unit: 'MINUTES')
}
steps {
cleanWs()
checkout scm
powershell '.devcontainer/docker_build_win.ps1 -arch x86 -python3_versions "' + python3Versions() + '"'
archiveArtifacts artifacts: 'build_windows_x86/*.zip'
archiveArtifacts artifacts: 'build_windows_x86_for_release/*.zip'
}
}
stage('DEB AMD64') {
agent { label 'linux-amd64' }
options {
skipDefaultCheckout()
timeout(time: 20, activity: true, unit: 'MINUTES')
}
steps {
cleanWs()
checkout scm
sh '.devcontainer/docker_build_debs.sh --arch amd64 --python3Versions "' + python3Versions() + '"'
archiveArtifacts artifacts: 'build_ubuntu_amd64/*.deb'
archiveArtifacts artifacts: 'build_ubuntu_amd64_for_release/*.deb'
}
}
stage('DEB ARM64') {
agent { label 'linux-arm64' }
options {
skipDefaultCheckout()
timeout(time: 20, activity: true, unit: 'MINUTES')
}
steps {
cleanWs()
checkout scm
sh '.devcontainer/docker_build_debs.sh --arch arm64v8 --python3Versions "' + python3Versions() + '"'
archiveArtifacts artifacts: 'build_ubuntu_arm64v8/*.deb'
archiveArtifacts artifacts: 'build_ubuntu_arm64v8_for_release/*.deb'
}
}
stage('DEB ARM32') {
agent { label 'linux-arm64' }
options {
skipDefaultCheckout()
timeout(time: 20, activity: true, unit: 'MINUTES')
}
steps {
cleanWs()
checkout scm
sh '.devcontainer/docker_build_debs.sh --arch arm32v7 --python3Versions "' + python3Versions() + '"'
archiveArtifacts artifacts: 'build_ubuntu_arm32v7/*.deb'
archiveArtifacts artifacts: 'build_ubuntu_arm32v7_for_release/*.deb'
}
}
}
}
}
// post {
// failure {
// script {
// if (BRANCH_NAME && (BRANCH_NAME == 'main' || BRANCH_NAME == 'master')) {
// mail to: "${env.Notification_Emails_MSCL}",
// subject: "Build Failed in Jenkins: ${env.JOB_NAME}",
// body: "See: ${env.BUILD_URL}",
// charset: 'UTF-8',
// mimeType: 'text/html';
// }
// }
// }
// changed {
// script {
// if (BRANCH_NAME && (BRANCH_NAME == 'main' || BRANCH_NAME == 'master') && currentBuild.currentResult == 'SUCCESS') { // Other values: FAILURE, UNSTABLE
// mail to: "${env.Notification_Emails_MSCL}",
// subject: "Jenkins build is back to normal: ${env.JOB_NAME}",
// body: "See: ${env.BUILD_URL}",
// charset: 'UTF-8',
// mimeType: 'text/html';
// }
// }
// }
// }
}