Untitled

 avatar
unknown
plain_text
5 months ago
8.1 kB
3
Indexable
trigger: none


parameters:
  - name: IsDeploy
    displayName: Select Yes If Deployment is required
    type: string
    default: Yes
    values:
      - Yes
      - No

resources:
  repositories:
  - repository: templates
    type: git
    name: Genesis/ADO_Onboard
    ref: refs/heads/genesis-release-v1

variables:
  - group: DevOpscfpush
  - name: reponame
    value: aurora-cdx
  - name: microservice_name
    value: aurora-cdx-cdr-svc
  - name: dockerspace
    value: convatec-devops
  - name: imagerepo
    value: aurora-cdx-cdr-int-repo
  - name: containerRegistryServiceConnection
    value: TnIDockerRegistryCF
  - name: java_version
    value: '21'
  - name: cfpushimagename
    value: aurora-cdx-cdr-int-svc
  - name: manifest_memory_size
    value: '2048M'
  - name: manifest_disk_size
    value: '1024M'
  - name: env
    value: int

pool:
  vmImage: 'ubuntu-latest'

stages:
- stage: Build
  jobs:
    - job: Install_Build
      displayName: Install, Build and docker push
      steps:
        #-- To checkout ADO_Onboard all the templates and other files --#
        - checkout: templates

        #-- To avoid confusion between ADO_Onboard and aurora-cdx checkout self repo --#
        - checkout: self
          fetchDepth: 0

        - template: Templates/install/Install_gitversion.yml@templates

        #-- Since we are checkingout two repos repo name should be given to calculate gitversion --# 
        - template: Templates/semanticversioning/gitexecute.yml@templates
          parameters:
            path: $(reponame)
        
        - template: Templates/install/install_trivy.yml@templates

        - template: Templates/install/install_syft.yml@templates

        - template: Templates/install/install_java.yml@templates
          parameters:
            java_version: $(java_version)
        
        - template: Templates/install/install_checkstyle.yml@templates
          parameters:
            path:  '$(reponame)/$(microservice_name)'

        - template: Templates/dependency_scan/git_leaks.yml@templates
          parameters:
            sourcedirectory: '$(reponame)/$(microservice_name)'

        - template: Templates/build/update_pom_file.yml@templates
          parameters:
            POM: '$(reponame)/$(microservice_name)/pom.xml'
            version: $(GitVersion.FullSemVer)

        - template: Templates/build/maven_build_service.yml@templates
          parameters:
            jdkversion: 'jdk-$(java_version)'
            POM: '$(reponame)/$(microservice_name)/pom.xml'
            settings_file: 'ADO_Onboard/tools/maven_settings_file/settings.xml'

        - template: Templates/universal_packages/publish_package.yml@templates
          parameters:
            publishdirectory: '$(reponame)/$(microservice_name)/target'
            feedtopublish: '40866c42-fa42-465b-9f0d-ac353a6fb06b/c81e3c6b-5774-494a-af9a-2c8ab7f6de42'
            version: '$(Versioninlowercase)'
            PackageName: '$(microservice_name)-$(env)'
        
        - template: Templates/install/install_jacoco.yml@templates
          parameters:
            microservice_name: '$(reponame)/$(microservice_name)'
            java_version: $(java_version)
        - template: Templates/publish_reports/publish_unit_test_results.yml@templates
          parameters:
            junit_file_path: '**/*/jacoco.xml'
        
        - template: Templates/docker/docker_login.yml@templates
          parameters:
           dockerregistry: $(containerRegistryServiceConnection)

        #-- Since we have convatecdevops/convatec-dev devided the docker URL and created docker space variable --#
        - template: Templates/docker/docker_build.yml@templates
          parameters:
            microservice: '$(reponame)/$(microservice_name)'
            docker_registry: $(containerRegistryServiceConnection)
            dockerspace: '$(dockerspace)/$(imagerepo)'
            buildId: $(GitVersion.FullSemVer)
            arguments: $(env)
        
        - template: Templates/docker/docker_images_listing.yml@templates

        - template: Templates/docker/docker_push.yml@templates
          parameters:
            buildId: $(GitVersion.FullSemVer)
            microservice: $(imagerepo)
            dockerspace: $(dockerspace)
                         
        - template: Templates/dependency_scan/docker_syft.yml@templates
          parameters:
            microservice: $(imagerepo)
            tag: $(GitVersion.FullSemVer)
            dockerspace:  $(dockerspace)

        - template: Templates/publish_reports/publish_trivy_artifacts.yml@templates
          parameters:
            microservice: $(imagerepo)
            tag: $(GitVersion.FullSemVer)
            dockerspace: $(dockerspace)

        - template: Templates/publish_reports/publish_artifacts.yml@templates
          parameters:
            directory: syft_report
            artifact_name: syft
        
        - template: Templates/publish_reports/Publish_checkstylereport.yml@templates
          parameters:
            path: $(microservice_name)
          
        - script: |
            echo "##vso[task.setvariable variable=BUILD_ID;isOutput=true]$(GitVersion.FullSemVer)" 
          name: Exportvar
          displayName: Save the variable            

- stage: Deploy
  dependsOn: Build 
  condition:  and(succeeded(), eq('${{ parameters.IsDeploy }}', 'Yes'))
  variables:
    Fullversion_buildID: $[ stageDependencies.Build.Install_Build.outputs['Exportvar.BUILD_ID'] ]
  jobs:
  - deployment: CF_deploy
    environment: cvt-int
    strategy:
     runOnce:
       deploy:
         steps:
          - checkout: self
          - script: |
             echo $(Fullversion_buildID)
            displayName: Print_buildID
          - template: Templates/cloudfoundry/update_manifestfile.yml@templates
            parameters:
              MEMORY: $(manifest_memory_size)
              DISK: $(manifest_disk_size)
              manifestfile_path: '$(microservice_name)/$(microservice_name)-manifest.yml'
              env: 'int'
          - template: Templates/cloudfoundry/cfpush.yml@templates
            parameters:
              cfusername: $(cfusername)
              cfpassword: $(cfpassword)
              cforg: 'client-convatec'
              cfspace: 'cvt-$(env)'
              imagerepo: '$(dockerspace)/$(imagerepo)'
              buildID: $(Fullversion_buildID)
              microservice: $(microservice_name)
              cfpushimagename: $(cfpushimagename)
              manifestfile: '$(microservice_name)/$(microservice_name)-manifest.yml'
          #-- Running network policy creation below --#              
          - template: Templates/cloudfoundry/cf_network_policy.yml@templates
            parameters:
              cfusername: $(cfusername)
              cfpassword: $(cfpassword)
              cforg: 'client-convatec'
              cfspace: 'cvt-$(env)'
              externalappname: 'aurora-cdx-cdr-int-svc'
              internalappname: 'aurora-sec-audit-int-svc'
              mappingport: '8505'
          - template: Templates/cloudfoundry/cf_network_policy.yml@templates
            parameters:
              cfusername: $(cfusername)
              cfpassword: $(cfpassword)
              cforg: 'client-convatec'
              cfspace: 'cvt-$(env)'
              externalappname: 'aurora-cdx-cdr-int-svc'
              internalappname: 'aurora-cdx-s3-int-svc'
              mappingport: '8517'
          - template: Templates/cloudfoundry/cf_network_policy.yml@templates
            parameters:
              cfusername: $(cfusername)
              cfpassword: $(cfpassword)
              cforg: 'client-convatec'
              cfspace: 'cvt-$(env)'
              externalappname: 'aurora-cdx-cdr-int-svc'
              internalappname: 'aurora-cdx-cfg-int-svc'
              mappingport: '8080'   
Editor is loading...
Leave a Comment