-
Notifications
You must be signed in to change notification settings - Fork 586
/
piperPipeline.groovy
96 lines (96 loc) · 5.14 KB
/
piperPipeline.groovy
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
void call(parameters) {
pipeline {
agent none
triggers {
issueCommentTrigger('.*/piper ([a-z]*).*')
}
options {
skipDefaultCheckout()
timestamps()
}
stages {
stage('Init') {
steps {
piperPipelineStageInit script: parameters.script, customDefaults: ['com.sap.piper/pipeline/stageOrdinals.yml'].plus(parameters.customDefaults ?: [])
}
}
stage('Pull-Request Voting') {
when { anyOf { branch 'PR-*'; branch parameters.script.commonPipelineEnvironment.getStepConfiguration('piperPipelineStagePRVoting', 'Pull-Request Voting').customVotingBranch } }
steps {
piperPipelineStagePRVoting script: parameters.script
}
}
stage('Build') {
when {branch parameters.script.commonPipelineEnvironment.getStepConfiguration('', '').productiveBranch}
steps {
piperPipelineStageBuild script: parameters.script
}
}
stage('Additional Unit Tests') {
when {allOf {branch parameters.script.commonPipelineEnvironment.getStepConfiguration('', '').productiveBranch; expression {return parameters.script.commonPipelineEnvironment.configuration.runStage?.get(env.STAGE_NAME)}}}
steps {
piperPipelineStageAdditionalUnitTests script: parameters.script
}
}
stage('Integration') {
when {allOf {branch parameters.script.commonPipelineEnvironment.getStepConfiguration('', '').productiveBranch; expression {return parameters.script.commonPipelineEnvironment.configuration.runStage?.get(env.STAGE_NAME)}}}
steps {
piperPipelineStageIntegration script: parameters.script
}
}
stage('Acceptance') {
when {allOf {branch parameters.script.commonPipelineEnvironment.getStepConfiguration('', '').productiveBranch; expression {return parameters.script.commonPipelineEnvironment.configuration.runStage?.get(env.STAGE_NAME)}}}
steps {
piperPipelineStageAcceptance script: parameters.script
}
}
stage('Security') {
when {allOf {branch parameters.script.commonPipelineEnvironment.getStepConfiguration('', '').productiveBranch; expression {return parameters.script.commonPipelineEnvironment.configuration.runStage?.get(env.STAGE_NAME)}}}
steps {
piperPipelineStageSecurity script: parameters.script
}
}
stage('Performance') {
when {allOf {branch parameters.script.commonPipelineEnvironment.getStepConfiguration('', '').productiveBranch; expression {return parameters.script.commonPipelineEnvironment.configuration.runStage?.get(env.STAGE_NAME)}}}
steps {
piperPipelineStagePerformance script: parameters.script
}
}
stage('Compliance') {
when {allOf {branch parameters.script.commonPipelineEnvironment.getStepConfiguration('', '').productiveBranch; expression {return parameters.script.commonPipelineEnvironment.configuration.runStage?.get(env.STAGE_NAME)}}}
steps {
piperPipelineStageCompliance script: parameters.script
}
}
stage('Confirm') {
agent none
when {allOf {expression { env.BRANCH_NAME ==~ parameters.script.commonPipelineEnvironment.getStepConfiguration('', '').productiveBranch }; anyOf {expression {return (currentBuild.result == 'UNSTABLE')}; expression {return parameters.script.commonPipelineEnvironment.getStepConfiguration('piperInitRunStageConfiguration', env.STAGE_NAME).manualConfirmation}}}}
steps {
piperPipelineStageConfirm script: parameters.script
}
}
stage('Promote') {
when { branch parameters.script.commonPipelineEnvironment.getStepConfiguration('', '').productiveBranch}
steps {
piperPipelineStagePromote script: parameters.script
}
}
stage('Release') {
when {allOf {branch parameters.script.commonPipelineEnvironment.getStepConfiguration('', '').productiveBranch; expression {return parameters.script.commonPipelineEnvironment.configuration.runStage?.get(env.STAGE_NAME)}}}
steps {
piperPipelineStageRelease script: parameters.script
}
}
}
post {
/* https://jenkins.io/doc/book/pipeline/syntax/#post */
success {buildSetResult(currentBuild)}
aborted {buildSetResult(currentBuild, 'ABORTED')}
failure {buildSetResult(currentBuild, 'FAILURE')}
unstable {buildSetResult(currentBuild, 'UNSTABLE')}
cleanup {
piperPipelineStagePost script: parameters.script
}
}
}
}