Files
ui/azure-pipelines.yml
2020-03-09 10:51:58 +09:00

146 lines
4.2 KiB
YAML

# 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:
# tags:
# include:
# - v*.*
# branches:
# include:
# - releases/*
# branches:
# include:
# - master
# paths:
# include:
# - docs/*
# exclude:
# - README.md
# - azure*.yml
- master
resources:
- repo: self
variables:
- group: common-value
# containerRegistry: 'event.azurecr.io'
# containerRegistryDockerConnection: 'acr'
# environment: 'aks.default'
- name: imageRepository
value: 'ui'
- name: dockerfilePath
value: '**/DockerfileAutoBuild'
- name: tag
value: '$(Build.BuildId)'
# Agent VM image name
- name: vmImageName
value: 'ubuntu-latest'
stages:
- stage: Build
displayName: Build stage
jobs:
- job: Build
displayName: Build
pool:
vmImage: $(vmImageName)
steps:
- task: Docker@2
inputs:
containerRegistry: $(containerRegistryDockerConnection)
repository: $(imageRepository)
command: 'buildAndPush'
Dockerfile: $(dockerfilePath)
tags: |
$(tag)
- 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: $(environment)
strategy:
runOnce:
deploy:
steps:
- task: Kubernetes@1
displayName: 'Get gatewayIp'
name: 'gatewayip'
continueOnError: true
inputs:
connectionType: 'Kubernetes Service Connection'
namespace: 'default'
command: 'get'
arguments: "svc gateway --ignore-not-found"
secretType: 'dockerRegistry'
containerRegistryType: 'Azure Container Registry'
outputFormat: "jsonpath='{.status.loadBalancer.ingress[0].ip}'"
- task: Kubernetes@1
inputs:
connectionType: 'Kubernetes Service Connection'
namespace: 'default'
command: 'apply'
useConfigurationFile: true
configurationType: 'inline'
inline: |
apiVersion: apps/v1
kind: Deployment
metadata:
name: $(imageRepository)
labels:
app: $(imageRepository)
spec:
replicas: 1
selector:
matchLabels:
app: $(imageRepository)
template:
metadata:
labels:
app: $(imageRepository)
spec:
containers:
- name: $(imageRepository)
image: $(containerRegistry)/$(imageRepository):$(tag)
ports:
- containerPort: 8080
env:
- name: VUE_APP_API_HOST
value: http://${gatewayip.KubectlOutput}:8080
secretType: 'dockerRegistry'
containerRegistryType: 'Azure Container Registry'
- task: Kubernetes@1
inputs:
connectionType: 'Kubernetes Service Connection'
namespace: 'default'
command: 'apply'
useConfigurationFile: true
configurationType: 'inline'
inline: |
apiVersion: v1
kind: Service
metadata:
name: $(imageRepository)
labels:
app: $(imageRepository)
spec:
ports:
- port: 8080
targetPort: 8080
selector:
app: $(imageRepository)
type:
LoadBalancer
secretType: 'dockerRegistry'
containerRegistryType: 'Azure Container Registry'