-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathazure-pipelines-deploy-linux-docker.yml
131 lines (107 loc) · 3.95 KB
/
azure-pipelines-deploy-linux-docker.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
trigger: none
parameters:
- name: build_environment
type: boolean
default: false
variables:
- group: HealthBuddy-website
stages:
- stage: build_infra
condition: and(succeeded(), ${{ parameters.build_environment }}, true)
jobs:
- job: build_infra
pool:
vmImage: 'ubuntu-16.04'
steps:
- task: AzureCLI@1
displayName: 'Azure CLI: Create Azure Container registry'
inputs:
azureSubscription: $(azSubscription)
scriptLocation: inlineScript
inlineScript: |
az acr create -n $(azureContainerRegistryShort) -g $(resourceGroupName) --sku Basic
- task: AzureCLI@1
displayName: 'Azure CLI: Create Azure App Service Plan'
inputs:
azureSubscription: $(azSubscription)
scriptLocation: inlineScript
inlineScript: |
az appservice plan create -n $(appServicePlanName) -g $(resourceGroupName) --is-linux --sku B1
- task: AzureCLI@1
displayName: 'Azure CLI: Create Azure web App'
inputs:
azureSubscription: $(azSubscription)
scriptLocation: inlineScript
inlineScript: |
az webapp create -n $(appName) -g $(resourceGroupName) -p $(appServicePlanName) --deployment-container-image-name $(azureContainerRegistry)/$(appName)
- stage: build_code
displayName: build_code
condition: always()
jobs:
- job: build_code
pool:
vmImage: 'ubuntu-16.04'
steps:
- task: DownloadSecureFile@1
name: SecuredConfig
displayName: 'Download Secured Config'
inputs:
secureFile: $(website_source_cfg)
- script: |
echo "Current dir:"
ls -a
echo Deleting "$(website_dest_cfg)" file
rm $(website_dest_cfg)
echo "Current dir:"
ls -a
echo Copying new "$(website_dest_cfg)" file
echo Source: $(SecuredConfig.secureFilePath)
echo Destination: $(website_dest_cfg)
cp $(SecuredConfig.secureFilePath) $(website_dest_cfg)
echo "Current dir:"
ls -a
displayName: Updating website config
- task: Docker@1
displayName: 'Build an image'
inputs:
azureSubscriptionEndpoint: $(azSubscription)
azureContainerRegistry: $(azureContainerRegistry)
dockerFile: dockerfile
imageName: $(imageName)
useDefaultContext: false
- task: Docker@1
displayName: 'Push an image'
inputs:
azureSubscriptionEndpoint: $(azSubscription)
azureContainerRegistry: $(azureContainerRegistry)
command: 'Push an image'
imageName: $(imageName)
- stage: deploy
dependsOn:
- build_code
condition: succeeded('build_code')
jobs:
- job: deploy
pool:
vmImage: 'ubuntu-16.04'
steps:
- task: AzureCLI@1
displayName: 'Azure CLI: Save container registry secrets'
inputs:
azureSubscription: $(azSubscription)
scriptLocation: inlineScript
inlineScript: |
az acr update -n $(azureContainerRegistryShort) --admin-enabled true
registryUserName=$(az acr credential show -n $(azureContainerRegistryShort) --query username)
registryPassword=$(az acr credential show -n $(azureContainerRegistryShort) --query passwords[0].value)
registryServerUrl=$(az acr show -n $(azureContainerRegistryShort) --query loginServer)
echo "##vso[task.setvariable variable=registryUserName]$registryUserName"
echo "##vso[task.setvariable variable=registryPassword;issecret=true]$registryPassword"
echo "##vso[task.setvariable variable=registryServerUrl]$registryServerUrl"
- task: AzureWebAppContainer@1
displayName: 'Azure Web App on Container Deploy'
inputs:
azureSubscription: $(azSubscription)
appName: $(appName)
containers: $(imageName)
appSettings: '-DOCKER_REGISTRY_SERVER_URL $(registryServerUrl) -DOCKER_REGISTRY_SERVER_USERNAME $(registryUserName) -DOCKER_REGISTRY_SERVER_PASSWORD $(registryPassword) -WEBSITES_PORT 80'