88 строки
2.3 KiB
YAML
88 строки
2.3 KiB
YAML
# Docker
|
|
# Build and push an image to Azure Container Registry
|
|
# https://docs.microsoft.com/azure/devops/pipelines/languages/docker
|
|
|
|
name: $(build.sourceBranchName)-$(Date:yyyyMMdd)$(Rev:.r)
|
|
|
|
trigger:
|
|
batch: true
|
|
branches:
|
|
include:
|
|
- master
|
|
- staging
|
|
- devsecops
|
|
- kubesec
|
|
paths:
|
|
exclude:
|
|
# Exclude README.md from triggering content deployments
|
|
# Exclude the app folder from triggering content deployments, since it isn't included in the Dockerfile anyway
|
|
- README.md
|
|
- app/*
|
|
|
|
# no PR builds
|
|
pr: none
|
|
|
|
resources:
|
|
- repo: self
|
|
|
|
variables:
|
|
# Container registry service connection established during pipeline creation
|
|
dockerRegistryServiceConnection: '9157bf98-df3a-495a-89bf-451c9cb4d572'
|
|
imageRepository: 'aksworkshop'
|
|
containerRegistry: 'msworkshops.azurecr.io'
|
|
dockerfilePath: '$(Build.SourcesDirectory)/Dockerfile'
|
|
tag: '$(Build.BuildNumber)'
|
|
sourceVersion: '$(Build.SourceVersion)'
|
|
sourceBranch: '$(Build.SourceBranchName)'
|
|
|
|
# Agent VM image name
|
|
vmImageName: 'ubuntu-latest'
|
|
|
|
stages:
|
|
- stage: Build
|
|
displayName: Build and push stage
|
|
jobs:
|
|
- job: Build
|
|
displayName: Build job
|
|
pool:
|
|
vmImage: $(vmImageName)
|
|
steps:
|
|
- script: sed -i 's/#BUILD_ID#/$(tag)/g' _includes/nav.html
|
|
displayName: Update site with Build ID
|
|
|
|
- script: |
|
|
SHORTCOMMITID=$(echo $(sourceVersion) | cut -c1-7)
|
|
sed -i "s/#COMMIT_ID#/$SHORTCOMMITID/g" _includes/nav.html
|
|
displayName: Update site with Commit ID
|
|
|
|
- task: Docker@2
|
|
displayName: Build and push an image to container registry
|
|
inputs:
|
|
command: buildAndPush
|
|
repository: $(imageRepository)
|
|
dockerfile: $(dockerfilePath)
|
|
containerRegistry: $(dockerRegistryServiceConnection)
|
|
tags: |
|
|
$(tag)
|
|
|
|
- stage: Deploy
|
|
displayName: Deploy to slot
|
|
jobs:
|
|
- job: Deploy
|
|
displayName: Deploy job
|
|
pool:
|
|
vmImage: $(vmImageName)
|
|
steps:
|
|
- task: AzureRmWebAppDeployment@4
|
|
inputs:
|
|
ConnectionType: 'AzureRM'
|
|
azureSubscription: 'AKS Workshop'
|
|
appType: 'webAppContainer'
|
|
WebAppName: 'aksworkshop'
|
|
deployToSlotOrASE: true
|
|
ResourceGroupName: 'workshops'
|
|
SlotName: '$(sourceBranch)'
|
|
DockerNamespace: '$(containerRegistry)'
|
|
DockerRepository: '$(imageRepository)'
|
|
DockerImageTag: '$(tag)'
|