Skip to content
Snippets Groups Projects
gke-indexer-cicd.yml 3.9 KiB
Newer Older
  • Learn to ignore specific revisions
  • David Diederich's avatar
    David Diederich committed
    # Maven
    # Build your Java project and run tests with Apache Maven.
    # Add steps that analyze code, save build artifacts, deploy, and more:
    # https://docs.microsoft.com/azure/devops/pipelines/languages/java
    
    trigger:
      branches:
        include:
        - kuber-migration
      paths:
        exclude:
          - README.md
          - .gitignore
    
    pool:
      name: Hosted Ubuntu 1604
      demands: maven
    
    variables:
      dockerDir: provider/indexer-gcp/docker
      imageName: os-indexer-app
      deploymentDir: provider/indexer-gcp/kubernetes/deployments
      deploymentFile: deployment-os-indexer-service.yml
      mavenSettings: ./indexer-core/maven/settings.xml
      coreModule: indexer-core
      gcpModule: indexer-gcp
    
      integrationTestCorePom: testing/indexer-test-core/pom.xml
      integrationTestGcpPom: testing/indexer-test-gcp/pom.xml
    steps:
    
      - task: DownloadSecureFile@1
        name: gcrKey
        inputs:
          secureFile: cicd-push-image-to-cr-keyfile.json
    
      - task: DownloadSecureFile@1
        name: kuberConfig
        inputs:
          secureFile: kubeconfig
    
      - task: Maven@3
        inputs:
          mavenPomFile: 'pom.xml'
          options: '--settings $(mavenSettings) -DVSTS_FEED_TOKEN=$(VSTS_FEED_TOKEN) -P $(coreModule) install'
          publishJUnitResults: false
          javaHomeOption: 'JDKVersion'
          mavenVersionOption: 'Default'
          mavenAuthenticateFeed: false
          effectivePomSkip: false
          sonarQubeRunAnalysis: false
    
      - task: Maven@3
        inputs:
          mavenPomFile: 'pom.xml'
          options: '--settings $(mavenSettings) -DVSTS_FEED_TOKEN=$(VSTS_FEED_TOKEN) -P $(gcpModule) -DskipTests package'
          publishJUnitResults: false
          javaHomeOption: 'JDKVersion'
          mavenVersionOption: 'Default'
          mavenAuthenticateFeed: false
          effectivePomSkip: false
    
      - bash: |
          #!/bin/bash
          set -e
          pushd $(dockerDir)
          docker-compose build $(imageName)
          echo 'Image done.'
          cat $(gcrKey.secureFilePath) | docker login -u _json_key --password-stdin https://gcr.io
          echo 'Login done.'
          docker push gcr.io/opendes/$(imageName)
          echo 'Push done.'
          popd
          pushd $(deploymentDir)
          kubectl --kubeconfig $(kuberConfig.secureFilePath) delete -f $(deploymentFile)
          kubectl --kubeconfig $(kuberConfig.secureFilePath) apply -f $(deploymentFile)
          popd
    
          attempt_counter=0
          max_attempts=60
          until [[ $(curl --head --write-out %{http_code} $(INDEXER_READINESS_URL) --silent -o /dev/null --fail) -eq 200 ]]; do
          if [ ${attempt_counter} -eq ${max_attempts} ];then
              echo "Service is not available, integraton tests are skipped"
              exit 1
          fi
    
          printf '.'
          attempt_counter=$(($attempt_counter+1))
          sleep 2
          done
    
      - task: Maven@3
        inputs:
          mavenPomFile: '$(integrationTestCorePom)'
          options: '--settings $(mavenSettings) -DVSTS_FEED_TOKEN=$(VSTS_FEED_TOKEN) install'
          publishJUnitResults: false
          javaHomeOption: 'JDKVersion'
          mavenVersionOption: 'Default'
          mavenAuthenticateFeed: false
          effectivePomSkip: false
          sonarQubeRunAnalysis: false
    
      - task: Maven@3
        inputs:
          mavenPomFile: '$(integrationTestGcpPom)'
          options: '--settings $(mavenSettings) -Dsurefire.useFile=false -DVSTS_FEED_TOKEN=$(VSTS_FEED_TOKEN) -DDEFAULT_DATA_PARTITION_ID_TENANT1=$(DEFAULT_DATA_PARTITION_ID_TENANT1) -DDEFAULT_DATA_PARTITION_ID_TENANT2=$(DEFAULT_DATA_PARTITION_ID_TENANT2) -DELASTIC_HOST=$(ELASTIC_HOST) -DELASTIC_PASSWORD=$(ELASTIC_PASSWORD) -DELASTIC_USER_NAME=$(ELASTIC_USER_NAME) -DENTITLEMENTS_DOMAIN=$(ENTITLEMENTS_DOMAIN) -DINDEXER_HOST=$(INDEXER_HOST) -DLEGAL_TAG=$(LEGAL_TAG) -DOTHER_RELEVANT_DATA_COUNTRIES=$(OTHER_RELEVANT_DATA_COUNTRIES) -DSEARCH_HOST=$(SEARCH_HOST) -DSEARCH_INTEGRATION_TESTER=$(SEARCH_INTEGRATION_TESTER) -DSTORAGE_HOST=$(STORAGE_HOST) compile'
          publishJUnitResults: false
          javaHomeOption: 'JDKVersion'
          mavenVersionOption: 'Default'
          mavenAuthenticateFeed: false
          effectivePomSkip: false
          sonarQubeRunAnalysis: false