forked from eugeneloza-clean/castle-engine
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Jenkinsfile
144 lines (137 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
135
136
137
138
139
140
141
142
143
144
/* -*- mode: groovy -*-
Confgure how to run our job in Jenkins.
See https://github.com/castle-engine/castle-engine/wiki/Cloud-Builds-(Jenkins) .
*/
pipeline {
agent {
docker {
image 'kambi/castle-engine-cloud-builds-tools:cge-none'
}
}
environment {
/* Used by CGE build tool ("castle-engine").
Define env based on another env variable.
According to https://github.com/jenkinsci/pipeline-model-definition-plugin/pull/110
this should be supported. */
CASTLE_ENGINE_PATH = "${WORKSPACE}"
}
stages {
stage('Build Tools (Default FPC)') {
steps {
sh 'make clean tools'
}
}
stage('Build Examples (Default FPC)') {
steps {
/* clean 1st, to make sure it's OK even when state is "clean" before "make examples" */
sh 'make clean examples'
}
}
stage('Build Examples Using Lazarus (Default FPC/Lazarus)') {
steps {
sh 'make clean examples-laz'
}
}
stage('Build And Run Auto-Tests (Default FPC)') {
steps {
sh 'export PATH="${PATH}:${CASTLE_ENGINE_PATH}/tools/build-tool/" && make tests'
}
}
stage('Build Using FpMake (Default FPC)') {
steps {
sh 'make clean build-using-fpmake'
}
}
/* Same with FPC 3.0.2.
We could use a script to reuse the code,
but then the detailed time breakdown/statistics would not be available in Jenkins. */
stage('Build Tools (FPC 3.0.2)') {
steps {
sh 'source /usr/local/fpclazarus/bin/setup.sh 3.0.2 && make clean tools'
}
}
stage('Build Examples (FPC 3.0.2)') {
steps {
/* clean 1st, to make sure it's OK even when state is "clean" before "make examples" */
sh 'source /usr/local/fpclazarus/bin/setup.sh 3.0.2 && make clean examples'
}
}
stage('Build Examples Using Lazarus (FPC 3.0.2/Lazarus)') {
steps {
sh 'source /usr/local/fpclazarus/bin/setup.sh 3.0.2 && make clean examples-laz'
}
}
stage('Build And Run Auto-Tests (FPC 3.0.2)') {
steps {
sh 'source /usr/local/fpclazarus/bin/setup.sh 3.0.2 && export PATH="${PATH}:${CASTLE_ENGINE_PATH}/tools/build-tool/" && make tests'
}
}
stage('Build Using FpMake (FPC 3.0.2)') {
steps {
sh 'source /usr/local/fpclazarus/bin/setup.sh 3.0.2 && make clean build-using-fpmake'
}
}
/* Same with FPC trunk.
We could use a script to reuse the code,
but then the detailed time breakdown/statistics would not be available in Jenkins. */
stage('Build Tools (FPC trunk)') {
steps {
sh 'source /usr/local/fpclazarus/bin/setup.sh trunk && make clean tools'
}
}
stage('Build Examples (FPC trunk)') {
steps {
/* clean 1st, to make sure it's OK even when state is "clean" before "make examples" */
sh 'source /usr/local/fpclazarus/bin/setup.sh trunk && make clean examples'
}
}
stage('Build Examples Using Lazarus (FPC trunk/Lazarus)') {
steps {
sh 'source /usr/local/fpclazarus/bin/setup.sh trunk && make clean examples-laz'
}
}
stage('Build And Run Auto-Tests (FPC trunk)') {
steps {
sh 'source /usr/local/fpclazarus/bin/setup.sh trunk && export PATH="${PATH}:${CASTLE_ENGINE_PATH}/tools/build-tool/" && make tests'
}
}
stage('Build Using FpMake (FPC trunk)') {
steps {
sh 'source /usr/local/fpclazarus/bin/setup.sh trunk && make clean build-using-fpmake'
}
}
stage('Pack Release') {
steps {
sh 'rm -f castle-engine*.zip' /* remove previous artifacts */
sh './tools/internal/pack_release/pack_release.sh'
}
}
/* update Docker image only when the "master" branch changes */
stage('Update Docker Image with CGE') {
when { branch 'master' }
steps {
build job: '../castle_game_engine_update_docker_image'
}
}
}
post {
success {
archiveArtifacts artifacts: 'castle-engine*.zip'
}
regression {
mail to: '[email protected]',
subject: "[jenkins] Build started failing: ${currentBuild.fullDisplayName}",
body: "See the build details on ${env.BUILD_URL}"
}
failure {
mail to: '[email protected]',
subject: "[jenkins] Build failed: ${currentBuild.fullDisplayName}",
body: "See the build details on ${env.BUILD_URL}"
}
fixed {
mail to: '[email protected]',
subject: "[jenkins] Build is again successfull: ${currentBuild.fullDisplayName}",
body: "See the build details on ${env.BUILD_URL}"
}
}
}