-
Notifications
You must be signed in to change notification settings - Fork 57
/
Jenkinsfile
134 lines (132 loc) · 4.46 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
// 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') {
agent { label 'windows10' }
options {
skipDefaultCheckout()
timeout(time: 20, activity: true, unit: 'MINUTES')
}
steps {
cleanWs()
checkout scm
powershell '.devcontainer/docker_build_win.ps1 -python3_versions "' + python3Versions() + '"'
archiveArtifacts artifacts: 'build_windows/*.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'
}
}
stage('RPM AMD64') {
agent { label 'linux-amd64' }
options {
skipDefaultCheckout()
timeout(time: 20, activity: true, unit: 'MINUTES')
}
steps {
cleanWs()
checkout scm
sh '.devcontainer/docker_build_rpms.sh --arch amd64 --python3Versions "' + python3Versions() + '"'
archiveArtifacts artifacts: 'build_centos_amd64/*.rpm'
}
}
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'
}
}
// 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'
// }
// }
// stage('RPM ARM64') {
// agent { label 'linux-arm64' }
// options {
// skipDefaultCheckout()
// timeout(time: 20, activity: true, unit: 'MINUTES')
// }
// steps {
// cleanWs()
// checkout scm
// sh '.devcontainer/docker_build_rpms.sh --arch arm64v8 --python3Versions "' + python3Versions() + '"'
// archiveArtifacts artifacts: 'build_centos_arm64v8/*.rpm'
// }
// }
}
}
}
// 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';
// }
// }
// }
// }
}