Search code examples
kubernetesgoogle-cloud-platformgoogle-kubernetes-enginebitbucket-pipelinesgoogle-cloud-build

How to write CI/CD pipeline to run integration testing of java micro services on Google kubernetes cluster?


Background: I have 8-9 private clusterIP spring based microservices in a GKE cluster. All of the microservices are having integration tests bundled with them. I am using bitbucket and using maven as build tool.

All of the microservices are talking to each other via rest call with url: http://:8080/rest/api/fetch

Requirement: I have testing enviroment ready with all the docker images up on GKE Test cluster. I want that as soon as I merge the code to master for service-A, pipeline should deploy image to tes-env and run integration test cases. If test cases passes, it should deploy to QA-environment, otherwise rollback the image of service-A back to previous one.

Issue: On every code merge to master, I am able to run JUNIT test cases of service-A, build its docker image, push it on GCR and deploy it on test-env cluster. But how can I trigger integration test cases after the deployment and rollback to previously deployed image back if integration test cases fails? Is there any way?

TIA


Solution

  • You can create different steps for each part:
    
    pipelines:
      branches:
        BRANCH_NAME:
        - step:
            script: 
              - BUILD
        - step:
            script: 
              - DEPLOY
        - step:
            script: 
              - First set of JUNIT test
        - step:
            script:
              - Run Integration Tests (Here you can add if you fail to do rollback)
            script:
              - Upload to QA