I have several microservices which use the same pipeline from a shared 
library <https://jenkins.io/doc/book/pipeline/shared-libraries/> which is 
named *jenkins-shared-pipelines* . The Jenkinsfile for a microservice is as 
follows:

@Library(['jenkins-shared-pipelines']) _

gradleProjectPrPipeline([buildAgent: 'oc-docker-jdk11', 
disableIntegrationTestStage: true])

In jenkins-shared-pipelines/vars, the gradleProjectBranchWrapper has the 
following stages:

/**
 * gradleProjectPrPipeline is a generic pipeline
 * @param pipelineProperties map used to pass parameters
 * @return
 */
void call(Map pipelineProperties = [:]) {
            .
            .
            .

    pipeline {
        agent {
            node {
                label "${pipelineProperties.buildAgent}"
            }
        }

        options {
            skipDefaultCheckout true
            timeout(time: 1, unit: 'HOURS')
            buildDiscarder(logRotator(
                    numToKeepStr: '5',
                    daysToKeepStr: '7',
                    artifactNumToKeepStr: '1',
                    artifactDaysToKeepStr: '7'
            ))
        }

        stages {
            stage('Clone') {                
                steps {
                    //clone step
                }
            }
            stage('Compile') {                
                steps {
                    script {
                       /*Some custom logic*/
                    }
                    runGradleTask([task: 'assemble',
                                   rawArgs: defaultGradleArgs + " 
-Pcurrent_version=${releaseTag}"
                    ])
                }
            }
            stage('Tests') {
                parallel {
                    stage('Unit tests') {                        
                        steps {
                            //Unit tests
                        }
                    }
                    stage('Integration tests') {                        
                        steps {
                            //Integration tests
                        }
                    }
                }
            }
            stage('Sonar scan') {                
                steps {
                    //Sonar scanning
                }
            }            
        }

        post {

            unsuccessful {
                script {
                    bitbucketHandler.notifyBuildFail([
                        displayName: pipelineName,
                        displayMessage: "Build ${env.BUILD_ID} failed at 
${env.BUILD_TIMESTAMP}."
                    ])
                }
            }
            success {
                script {
                    bitbucketHandler.notifyBuildSuccess([
                        displayName: pipelineName,
                        displayMessage: "Build ${env.BUILD_ID} completed at 
${env.BUILD_TIMESTAMP}."
                    ])
                }
            }
        }
    }
}

Now, there will be several more pipelines in jenkins-shared-pipelines(under 
the same vars directory) e.g: awsPipeline, azurePipeline and so on which 
will also incorporate the deployment stages. These pipelines will require 
all the stages in the above gradleProjectBranchWrapper and will also add a 
few of their own stages. Currently, we simply copy-paste these stages in 
the new pipelines, then, we invoke these new pipelines from the 
microservices, so for example:

@Library(['jenkins-shared-pipelines']) _

awsPipeline([buildAgent: 'oc-docker-jdk11', disableIntegrationTestStage: true])

I was wondering if there is a way to include the gradleProjectBranchWrapper 
in the pipelines like awsPipeline, azurePipeline and so on. Note: There is 
a post block in the gradleProjectBranchWrapper, the other pipelines may 
have their own post blocks

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to jenkinsci-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/834dd15c-a3a0-4f2b-9ad4-9d85767b4dcc%40googlegroups.com.

Reply via email to