11trigger :
2- - none
2+ - none
33
44pool :
5- vmImage : ubuntu-latest
5+ vmImage : ubuntu-latest
66
77stages :
8- - stage : Build
9- displayName : Build stage
10- jobs :
11- - job : Build
12- steps :
13-
14- - task : DownloadSecureFile@1
15- displayName : ' download PROD Africa backend'
16- inputs :
17- secureFile : ' BACKEND_ENV_FILE_AFRICA' # string. Required. Secure File.
18-
19- - task : CopyFiles@2
20- displayName : ' copy PROD Africa backend'
21- inputs :
22- SourceFolder : ' $(Agent.TempDirectory)'
23- Contents : BACKEND_ENV_FILE_AFRICA
24- TargetFolder : ' ./backend'
25-
26- - script : mv ./backend/BACKEND_ENV_FILE_AFRICA ./backend/.env
27- displayName : ' rename PROD Africa .env'
28- - task : DownloadSecureFile@1
29- displayName : ' download PROD Africa frontend'
30- inputs :
31- secureFile : ' FRONTEND_ENV_FILE_AFRICA' # string. Required. Secure File.
32-
33- - task : CopyFiles@2
34- displayName : ' copy PROD Africa frontend'
35- inputs :
36- SourceFolder : ' $(Agent.TempDirectory)'
37- Contents : FRONTEND_ENV_FILE_AFRICA
38- TargetFolder : ' ./frontend'
39-
40- - script : mv ./frontend/FRONTEND_ENV_FILE_AFRICA ./frontend/.env
41- displayName : ' rename PROD Africa .env'
42-
43- - script : ls -a ./frontend
44- displayName : ' ls'
45-
46- - script : ls -Rn
47- displayName : ' ls'
48-
49-
50- - task : NodeTool@0
51- inputs :
52- versionSpec : ' 12.20.1'
53- displayName : ' Install Node.js'
54-
55- - task : Bash@3
56- inputs :
57- targetType : ' inline'
58- script : |
59- node -v
60- npm -v
61- npm install
62- npm run build
63-
64- - task : ArchiveFiles@2
65- displayName : ' Archive files'
66- inputs :
67- rootFolderOrFile : ' $(System.DefaultWorkingDirectory)'
68- includeRootFolder : false
69- archiveType : zip
70- archiveFile : $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
71- replaceExistingArchive : true
72- - upload : $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
73- artifact : drop
74-
75-
76- - deployment : VMDeploy_AFRICA
77- dependsOn : Build
78- displayName : Web deploy Africa
79- environment :
80- name : PROD
81- resourceType : VirtualMachine
82- tags : africa
83- strategy :
84- runOnce :
85- preDeploy :
8+ - stage : Build
9+ displayName : Build stage
10+ jobs :
11+ - job : Build
8612 steps :
87- - task : DownloadPipelineArtifact@2
88- inputs :
89- buildType : ' current'
90- artifactName : drop
91- targetPath : ' $(Pipeline.Workspace)/drop'
92-
93- - script : echo initialize, cleanup, backup, install certs
94-
95- deploy :
96- steps :
97- - task : Bash@3
98- inputs :
99- targetType : ' inline'
100- script : |
101- Modify deployment script based on the app type
102- echo "Starting deployment script run"
103-
104-
105- - task : ExtractFiles@1
106- inputs :
107- archiveFilePatterns : ' $(Pipeline.Workspace)/drop/$(Build.BuildId).zip'
108- destinationFolder : ' $(Pipeline.Workspace)/japp'
109- cleanDestinationFolder : true
110- overwriteExistingFiles : true
111-
112- - task : DeleteFiles@1
113- inputs :
114- SourceFolder : ' $(Pipeline.Workspace)/drop'
115- Contents : ' $(Build.BuildId).zip'
116-
117- - task : Bash@3
118- inputs :
119- targetType : ' inline'
120- script : |
121- pm2 restart index
122- sudo systemctl restart nginx
123-
124-
125- routeTraffic :
126- steps :
127- - script : echo routing traffic
128- postRouteTraffic :
129- steps :
130- - script : echo health check post-route traffic
131- on :
132- failure :
133- steps :
134- - script : echo Restore from backup! This is on failure
135- success :
136- steps :
137- - script : echo Notify! This is on success
13+ - task : DownloadSecureFile@1
14+ displayName : ' download PROD Africa backend'
15+ inputs :
16+ secureFile : ' BACKEND_ENV_FILE_AFRICA' # string. Required. Secure File.
17+
18+ - task : CopyFiles@2
19+ displayName : ' copy PROD Africa backend'
20+ inputs :
21+ SourceFolder : ' $(Agent.TempDirectory)'
22+ Contents : BACKEND_ENV_FILE_AFRICA
23+ TargetFolder : ' ./backend'
24+
25+ - script : mv ./backend/BACKEND_ENV_FILE_AFRICA ./backend/.env
26+ displayName : ' rename PROD Africa .env'
27+ - task : DownloadSecureFile@1
28+ displayName : ' download PROD Africa frontend'
29+ inputs :
30+ secureFile : ' FRONTEND_ENV_FILE_AFRICA' # string. Required. Secure File.
31+
32+ - task : CopyFiles@2
33+ displayName : ' copy PROD Africa frontend'
34+ inputs :
35+ SourceFolder : ' $(Agent.TempDirectory)'
36+ Contents : FRONTEND_ENV_FILE_AFRICA
37+ TargetFolder : ' ./frontend'
38+
39+ - script : mv ./frontend/FRONTEND_ENV_FILE_AFRICA ./frontend/.env
40+ displayName : ' rename PROD Africa .env'
41+
42+ - script : ls -a ./frontend
43+ displayName : ' ls'
44+
45+ - script : ls -Rn
46+ displayName : ' ls'
47+
48+ - task : NodeTool@0
49+ inputs :
50+ versionSpec : ' 12.20.1'
51+ displayName : ' Install Node.js'
52+
53+ - task : Bash@3
54+ inputs :
55+ targetType : ' inline'
56+ script : |
57+ node -v
58+ npm -v
59+ npm install
60+ npm run build
61+
62+ - task : ArchiveFiles@2
63+ displayName : ' Archive files'
64+ inputs :
65+ rootFolderOrFile : ' $(System.DefaultWorkingDirectory)'
66+ includeRootFolder : false
67+ archiveType : zip
68+ archiveFile : $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
69+ replaceExistingArchive : true
70+ - upload : $(Build.ArtifactStagingDirectory)/$(Build.BuildId).zip
71+ artifact : drop
72+
73+ - deployment : VMDeploy_AFRICA
74+ dependsOn : Build
75+ displayName : Web deploy Africa
76+ environment :
77+ name : PROD
78+ resourceType : VirtualMachine
79+ tags : africa
80+ strategy :
81+ runOnce :
82+ preDeploy :
83+ steps :
84+ - task : DownloadPipelineArtifact@2
85+ inputs :
86+ buildType : ' current'
87+ artifactName : drop
88+ targetPath : ' $(Pipeline.Workspace)/drop'
89+
90+ - script : echo initialize, cleanup, backup, install certs
91+
92+ deploy :
93+ steps :
94+ - task : Bash@3
95+ inputs :
96+ targetType : ' inline'
97+ script : |
98+ Modify deployment script based on the app type
99+ echo "Starting deployment script run"
100+
101+ - task : ExtractFiles@1
102+ inputs :
103+ archiveFilePatterns : ' $(Pipeline.Workspace)/drop/$(Build.BuildId).zip'
104+ destinationFolder : ' $(Pipeline.Workspace)/japp'
105+ cleanDestinationFolder : true
106+ overwriteExistingFiles : true
107+
108+ - task : DeleteFiles@1
109+ inputs :
110+ SourceFolder : ' $(Pipeline.Workspace)/drop'
111+ Contents : ' $(Build.BuildId).zip'
112+
113+ - task : Bash@3
114+ inputs :
115+ targetType : ' inline'
116+ script : |
117+ pm2 restart index
118+ sudo systemctl restart nginx
119+
120+ routeTraffic :
121+ steps :
122+ - script : echo routing traffic
123+ postRouteTraffic :
124+ steps :
125+ - script : echo health check post-route traffic
126+ on :
127+ failure :
128+ steps :
129+ - script : echo Restore from backup! This is on failure
130+ success :
131+ steps :
132+ - script : echo Notify! This is on success
0 commit comments