diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 0000000..21faf49 --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,121 @@ +# Deploy to Azure Kubernetes Service +# Build and push image to Azure Container Registry; Deploy to Azure Kubernetes Service +# https://docs.microsoft.com/azure/devops/pipelines/languages/docker + +trigger: + - main + +resources: + - repo: self + +variables: + + # Container registry service connection established during pipeline creation + dockerRegistryServiceConnection: 'ba554595-2da8-4cf6-88c4-a57c75966491' + imageRepository: 'multicloudapp' + containerRegistry: 'multicloud.azurecr.io' + dockerfilePath: '**/Dockerfile' + tag: '$(Build.BuildId)' + imagePullSecret: 'multicloud2012b828-auth' + + # Agent VM image name + vmImageName: 'ubuntu-latest' + + # Name of the new namespace being created to deploy the PR changes. + k8sNamespaceForPR: 'review-app-$(System.PullRequest.PullRequestId)' + +stages: + - stage: Build + displayName: Build stage + jobs: + - job: Build + displayName: Build + pool: + vmImage: $(vmImageName) + steps: + - task: JavaToolInstaller@0 + inputs: + versionSpec: '17' + jdkArchitectureOption: 'x64' + jdkSourceOption: 'PreInstalled' + - task: Maven@4 + inputs: + mavenPomFile: 'pom.xml' + publishJUnitResults: true + testResultsFiles: '**/surefire-reports/TEST-*.xml' + javaHomeOption: 'JDKVersion' + mavenVersionOption: '1.17' + mavenAuthenticateFeed: false + effectivePomSkip: false + sonarQubeRunAnalysis: false + - task: Docker@2 + displayName: Build and push an image to container registry + inputs: + command: buildAndPush + repository: $(imageRepository) + dockerfile: $(dockerfilePath) + containerRegistry: $(dockerRegistryServiceConnection) + tags: | + $(tag) + + - upload: manifests + artifact: manifests + - script: | + echo Downloading Liquibase and Oracle JDBC driver + wget https://github.com/liquibase/liquibase/releases/download/v4.4.3/liquibase-4.4.3.tar.gz + tar -xzf liquibase-4.4.3.tar.gz + wget https://download.oracle.com/otn-pub/otn_software/jdbc/233/ojdbc8.jar + wget https://download.oracle.com/otn_software/java/sqldeveloper/sqlcl-latest.zip + sudo apt-get install unzip + unzip sqlcl-latest.zip + displayName: 'Install Liquibase and Oracle JDBC' + + + - stage: Deploy + displayName: Deploy stage + dependsOn: Build + + jobs: + + - deployment: Deploy + condition: and(succeeded(), not(startsWith(variables['Build.SourceBranch'], 'refs/pull/'))) + displayName: Deploy + pool: + vmImage: $(vmImageName) + environment: 'paulparkinsonazuredevopsoracledatabase-8684.default' + strategy: + runOnce: + deploy: + steps: + - task: KubernetesManifest@0 + displayName: Create imagePullSecret + inputs: + action: createSecret + secretName: $(imagePullSecret) + dockerRegistryEndpoint: $(dockerRegistryServiceConnection) + + - script: | + yq eval '.spec.template.spec.containers[0].env += [{"name": "AZURE_LOG_LEVEL", "value": "verbose"}, {"name": "AZURE_CLIENT_ID", "value": "$(AZURE_CLIENT_ID)"}, {"name": "AZURE_CLIENT_SECRET", "value": "$(AZURE_CLIENT_SECRET)"}, {"name": "AZURE_TENANT_ID", "value": "$(AZURE_TENANT_ID)"}]' -i $(Pipeline.Workspace)/manifests/deployment.yml + displayName: 'Add Environment Variable with yq' + + - task: KubernetesManifest@0 + displayName: Deploy to Kubernetes cluster + inputs: + action: deploy + manifests: | + $(Pipeline.Workspace)/manifests/deployment.yml + $(Pipeline.Workspace)/manifests/service.yml + imagePullSecrets: | + $(imagePullSecret) + containers: | + $(containerRegistry)/$(imageRepository):$(tag) + + - task: Kubernetes@1 + displayName: Deploy ServiceMonitor + inputs: + connectionType: Kubernetes Service Connection + kubernetesServiceEndpoint: $(kubernetesServiceConnection) + namespace: default + command: apply + useConfigurationFile: true + configuration: $(Pipeline.Workspace)/manifests/servicemonitor.yaml diff --git a/pom.xml b/pom.xml index 5553082..cf2bafe 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ org.springframework.boot spring-boot-starter-parent - 3.1.2 + 3.1.4 oraclemulticloud @@ -17,6 +17,7 @@ 23.3.0.23.09 3.1.2 + 1.31 17 17