-
Notifications
You must be signed in to change notification settings - Fork 211
/
Copy pathazure-pipelines.yml
145 lines (137 loc) · 4.17 KB
/
azure-pipelines.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
# 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'