On Monday, September 30, 2019 at 9:35:30 AM UTC+2, Kaliyug Antagonist wrote:
>
> 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:*
>
>    - The workspace(where the clone stag checks out the code and later 
>    stages operate) will be used by awsPipeline etc. In other words, the 
>    variables and results from the gradleProjectBranchWrapper should be 
>    accessible to the awsPipeline etc.
>    - 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/bdd51911-c3d3-459d-9434-f5d354bbcbf4%40googlegroups.com.

Reply via email to