trigger: - master resources: repositories: - repository: olympus-common # Alias for the first repository type: git name: Olympus/olympus-common # Project and repository name ref: master variables: dockerRegistryServiceConnection: 'docker-registry-olympus' imageName: 'hermione' shortCommitSha: '' envName: 'aks-olympus' azurecontainerRegistry: 'olympusreg.azurecr.io' resourceName: 'olympus' JAVA_HOME: '/usr/lib/jvm/java-21-openjdk-amd64/bin/java' MAVEN_HOME: '/usr/share/maven/bin/mvn' PATH: '/usr/lib/jvm/java-21-openjdk-amd64/bin/java:/usr/share/maven/bin/mvn:$(PATH)' stages: - stage: Build displayName: Build stage jobs: - job: Build displayName: "Build & push to ACR" pool: name: default steps: - checkout: self - checkout: olympus-common - script: | echo "##vso[task.setvariable variable=shortCommitSha]$(echo $(Build.SourceVersion) | cut -c1-8)" displayName: 'Set Short Commit SHA' - script: | echo "Building the first repository..." ls -lrth displayName: 'list files' - task: Maven@3 inputs: mavenPomFile: 'olympus-common/pom.xml' goals: 'install' displayName: 'Build olympus-common' - task: Maven@3 inputs: mavenPomFile: 'hermione/pom.xml' goals: 'install -DskipTests' displayName: 'Build hermione' - script: | echo "Listing the docker images..." docker images displayName: 'list docker images' - task: Docker@2 inputs: command: 'buildAndPush' repository: '$(imageName)' Dockerfile: 'hermione/Dockerfile' containerRegistry: $(dockerRegistryServiceConnection) tags: '$(shortCommitSha)' displayName: 'Build and push an image to container registry' - script: | echo "Listing the docker images..." docker images displayName: 'List docker images' - upload: hermione/manifests artifact: manifests - stage: Deploy displayName: Deploy stage dependsOn: Build jobs: - deployment: Deploy condition: succeeded() displayName: "Deploy to ${{variables.envName}}" pool: name: default environment: name: $(envName).$(resourceName) resourceType: Kubernetes strategy: runOnce: deploy: steps: - script: | echo "##vso[task.setvariable variable=shortCommitSha]$(echo $(Build.SourceVersion) | cut -c1-8)" displayName: 'Set Short Commit SHA' - script: | echo "########################################################################" echo "Short Commit SHA: $(shortCommitSha)" displayName: 'Echo short commit SHA' - task: KubernetesManifest@0 displayName: Deploy to Kubernetes cluster inputs: action: deploy manifests: | $(Pipeline.Workspace)/manifests/hermione-deployment.yaml containers: | $(azurecontainerRegistry)/$(imageName):$(shortCommitSha) - script: | echo "Removing Docker images to clean up..." docker rmi $(docker images -q) displayName: 'Clean up Docker Images' continueOnError: true condition: always()