-
Notifications
You must be signed in to change notification settings - Fork 58
/
azure-pipelines.yml
130 lines (112 loc) · 5.12 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
trigger:
- none
pool:
vmImage: ubuntu-latest
stages:
- stage: Build
displayName: Build stage
jobs:
- job: Build
steps:
- task: DownloadSecureFile@1
displayName: 'download STAG backendend'
inputs:
secureFile: 'BACKEND_ENV_FILE_STAG_UPDATED' # string. Required. Secure File.
- task: CopyFiles@2
displayName: 'copy STAG backendend'
inputs:
SourceFolder: '$(Agent.TempDirectory)'
Contents: BACKEND_ENV_FILE_STAG_UPDATED
TargetFolder: './backend'
- script: mv ./backend/BACKEND_ENV_FILE_STAG_UPDATED ./backend/.env
displayName: 'rename STAG .env'
- task: DownloadSecureFile@1
displayName: 'download STAG frontend'
inputs:
secureFile: 'FRONTEND_ENV_FILE_STAG_UPDATED' # string. Required. Secure File.
- task: CopyFiles@2
displayName: 'copy STAG frontend'
inputs:
SourceFolder: '$(Agent.TempDirectory)'
Contents: FRONTEND_ENV_FILE_STAG_UPDATED
TargetFolder: './frontend'
- script: mv ./frontend/FRONTEND_ENV_FILE_STAG_UPDATED ./frontend/.env
displayName: 'rename STAG .env'
- script: ls -a ./frontend
displayName: 'ls'
- script: ls -Rn
displayName: 'ls'
- task: NodeTool@0
inputs:
versionSpec: '12.20.1'
displayName: 'Install Node.js'
- task: Bash@3
inputs:
targetType: 'inline'
script: |
node -v
npm -v
npm install
npm run build
- task: ArchiveFiles@2
displayName: 'Archive files'
inputs:
rootFolderOrFile: '$(System.DefaultWorkingDirectory)'
includeRootFolder: false
archiveType: zip
archiveFile: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
replaceExistingArchive: true
- upload: $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
artifact: drop
- deployment: VMDeploy
dependsOn: Build
displayName: Web deploy
environment:
name: STAGING
resourceType: VirtualMachine
strategy:
runOnce:
preDeploy:
steps:
- task: DownloadPipelineArtifact@2
inputs:
buildType: 'current'
artifactName: drop
targetPath: '$(Pipeline.Workspace)/drop'
- script: echo initialize, cleanup, backup, install certs
deploy:
steps:
- task: Bash@3
inputs:
targetType: 'inline'
script: |
echo "Starting deployment script run"
- task: ExtractFiles@1
inputs:
archiveFilePatterns: '$(Pipeline.Workspace)/drop/$(Build.BuildId).zip'
destinationFolder: '$(Pipeline.Workspace)/japp'
cleanDestinationFolder: true
overwriteExistingFiles: true
- task: DeleteFiles@1
inputs:
SourceFolder: '$(Pipeline.Workspace)/drop'
Contents: '$(Build.BuildId).zip'
- task: Bash@3
inputs:
targetType: 'inline'
script: |
pm2 restart index
sudo systemctl restart nginx
routeTraffic:
steps:
- script: echo routing traffic
postRouteTraffic:
steps:
- script: echo health check post-route traffic
on:
failure:
steps:
- script: echo Restore from backup! This is on failure
success:
steps:
- script: echo Notify! This is on success