Skip to content
Snippets Groups Projects
gke-legal-cicd.yml 3.8 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:
      buildMavenModules: legal-core,provider/legal-gcp
      dockerDir: provider/legal-gcp/docker
      imageName: os-legal-app
      deploymentDir: provider/legal-gcp/kubernetes/deployments
      deploymentFile: deployment-os-legal-service.yml
      mavenSettings: ./maven/settings.xml
    
      integrationTestCorePom: testing/legal-test-core/pom.xml
      integrationTestGcpPom: testing/legal-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: DownloadSecureFile@1
        name: gac
        inputs:
          secureFile: opendes-datafier-126f1340d475.json
    
      - task: Maven@3
        inputs:
          mavenPomFile: 'pom.xml'
          options: '--settings $(mavenSettings) -DVSTS_FEED_TOKEN=$(VSTS_FEED_TOKEN) -P legal-core 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 legal-gcp -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
          max_attempts=120
          until [[ $(curl --head --write-out %{http_code} $(LEGAL_READINESS_URL) --silent -o /dev/null --fail) -eq 401 ]]; 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) -DargLine="-DGOOGLE_APPLICATION_CREDENTIALS=$(gac.secureFilePath)" -DSKIP_HTTP_TESTS=SKIP_HTTP_TESTS -Dsurefire.useFile=false -DVSTS_FEED_TOKEN=$(VSTS_FEED_TOKEN) -DINTEGRATION_TESTER=$(INTEGRATION_TESTER) -DNO_DATA_ACCESS_TESTER=$(NO_DATA_ACCESS_TESTER) -DHOST_URL=$(HOST_URL) -DINTEGRATION_TEST_AUDIENCE=$(INTEGRATION_TEST_AUDIENCE) -DMY_TENANT=$(MY_TENANT) -DMY_TENANT_PROJECT=$(MY_TENANT_PROJECT) compile'
          publishJUnitResults: false
          javaHomeOption: 'JDKVersion'
          mavenVersionOption: 'Default'
          mavenAuthenticateFeed: false
          effectivePomSkip: false
          sonarQubeRunAnalysis: false