1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2024-12-14 11:03:09 +02:00
sap-jenkins-library/vars/piperPipeline.groovy
Oliver Nocon 9e539e68ee
Piper pipeline - enhance stages (#755)
* fill PRVoting stage with content
* add prVoting stage incl. tests
* add Build stage incl. Tests
* add docs pages
* add additional unit test stage
* add acceptance stage and additional documentation ...
* add release stage content
* add promote stage
* add Security stage, fix defaults for Promote stage
* fix issue in doc generation
2019-07-03 10:13:26 +02:00

98 lines
5.1 KiB
Groovy

void call(parameters) {
pipeline {
agent none
triggers {
issueCommentTrigger('.*/piper ([a-z]*).*')
}
options {
skipDefaultCheckout()
timestamps()
}
stages {
stage('Init') {
steps {
library 'piper-lib-os'
piperPipelineStageInit script: parameters.script, customDefaults: 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
}
}
}
}