-
Notifications
You must be signed in to change notification settings - Fork 138
/
Copy pathJenkinsfile
117 lines (105 loc) · 3.96 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
/*
* (c) Copyright, Real-Time Innovations, 2021. All rights reserved.
* RTI grants Licensee a license to use, modify, compile, and create derivative
* works of the software solely for use with RTI Connext DDS. Licensee may
* redistribute copies of the software provided that all such copies are subject
* to this license. The software is provided "as is", with no warranty of any
* type, including any warranty for fitness for any purpose. RTI is under no
* obligation to maintain or support the software. RTI shall not be liable for
* any incidental or consequential damages arising out of the use or inability
* to use the software.
*/
def runBuildStage(String buildMode, String linkMode) {
def cmd = "python3 ${env.WORKSPACE}/resources/ci_cd/linux_build.py"
cmd += " --build-mode ${buildMode}"
cmd += " --link-mode ${linkMode}"
cmd += " --build-dir ${get_build_directory(buildMode, linkMode)}"
sh(cmd)
}
def get_build_directory(String buildMode, String linkMode) {
return "build_${buildMode}_${linkMode}"
}
pipeline {
agent none
options {
disableConcurrentBuilds()
/*
To avoid excessive resource usage in server, we limit the number
of builds to keep in pull requests
*/
buildDiscarder(
logRotator(
artifactDaysToKeepStr: '',
artifactNumToKeepStr: '',
daysToKeepStr: '',
/*
For pull requests only keep the last 10 builds, for regular
branches keep up to 20 builds.
*/
numToKeepStr: changeRequest() ? '10' : '20'
)
)
// Set a timeout for the entire pipeline
timeout(time: 2, unit: 'HOURS')
}
stages {
stage('Build sequence') {
agent {
dockerfile {
filename 'resources/docker/Dockerfile.linux'
label 'docker'
}
}
environment {
RTI_INSTALLATION_PATH = "${env.WORKSPACE}"
}
stages {
stage('Download Packages') {
steps {
sh 'pip3 install -r resources/ci_cd/requirements.txt'
withAWSCredentials {
withCredentials([
string(credentialsId: 's3-bucket', variable: 'RTI_AWS_BUCKET'),
string(credentialsId: 's3-path', variable: 'RTI_AWS_PATH'),
]) {
sh 'python3 resources/ci_cd/linux_install.py -a $CONNEXTDDS_ARCH'
}
}
}
}
stage('Build all modes') {
matrix {
axes {
axis {
name 'buildMode'
values 'release', 'debug'
}
axis {
name 'linkMode'
values 'static', 'dynamic'
}
}
stages {
stage('Build single mode') {
steps {
echo("Build ${buildMode}/${linkMode}")
runBuildStage(buildMode, linkMode)
}
}
}
}
}
stage('Static Analysis') {
steps {
sh "python3 resources/ci_cd/linux_static_analysis.py --build-dir ${get_build_directory('release', 'dynamic')}"
}
}
}
post {
cleanup {
cleanWs()
}
}
}
}
}