# 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