# Docker # Build a Docker image # https://docs.microsoft.com/azure/devops/pipelines/languages/docker name: 1.0.0-$(SourceBranchName)-$(Rev:r) trigger: - main parameters: - name: forcePush displayName: Force push type: boolean default: false resources: - repo: self variables: tag: "$(Build.BuildNumber)" imageName: "redis-api" isMaster: $[eq(variables['Build.SourceBranchName'], 'master')] shouldPush: $[or(eq(${{parameters.forcePush}}, True), eq(variables['isMaster'], True))] tags: | stages: - stage: Build displayName: Set version jobs: - job: CreateArtifact displayName: Create version artifact steps: - task: Bash@3 displayName: Write buildnumber inputs: targetType: "inline" script: | echo '$(Build.BuildNumber)' > $(Pipeline.Workspace)/.version - task: PublishPipelineArtifact@1 inputs: targetPath: "$(Pipeline.Workspace)/.version" artifact: "Version" publishLocation: "pipeline" - task: Bash@3 displayName: Add tag main-latest if main branch inputs: targetType: "inline" script: | localTags = $(tag) localTags += "\nlatest" if [ $[isMaster] ]; then localTags += "\nlatest-main" echo -e "##vso[task.setvariable variable=tags;]$localTags" fi echo -e $localTags - job: Build displayName: Build pool: vmImage: ubuntu-latest steps: - task: Bash@3 inputs: targetType: "inline" script: | echo "VERSION=$(tag)" >> .env.production echo "ShouldPush=$(shouldPush)" echo "ForcePush=${{ parameters.forcePush }}" echo "isMaster=$(isMaster)" - task: AzureCLI@2 displayName: Login to ACR inputs: azureSubscription: "mi-devops" scriptType: "bash" scriptLocation: "inlineScript" workingDirectory: "$(build.sourcesDirectory)" inlineScript: az acr login --name acrscandicfrontend - task: AzureCLI@2 displayName: Build and push to ACR inputs: azureSubscription: "mi-devops" scriptType: "bash" scriptLocation: "inlineScript" workingDirectory: "$(build.sourcesDirectory)" inlineScript: | if [ "$(shouldPush)" != "True" ]; then echo "Not pushing to ACR" noPush="--no-push" else echo "Pushing to ACR" noPush="" fi echo "isMaster: $(isMaster)" if [ "$(isMaster)" == "True" ]; then echo "Building with latest tag" az acr build . --image $(imageName):latest -r acrscandicfrontend $noPush fi echo "Building with $(tag) tag" az acr build . --image $(imageName):$(tag) -r acrscandicfrontend $noPush