1- # Starter pipeline
2- # Start with a minimal pipeline that you can customize to build and deploy your code.
3- # Add steps that build, run tests, deploy, and more:
4- # https://aka.ms/yaml
5-
61trigger :
7- - PROD
2+ - none
83
94pool :
105 vmImage : ubuntu-latest
116
12- steps :
13- - script : echo Hello, world!
14- displayName : ' Run a one-line script'
7+ stages :
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 :
86+ 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+
15124
16- - script : |
17- echo Add other tasks to build, test, and deploy your project.
18- echo See https://aka.ms/yaml
19- displayName : ' Run a multi-line script'
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
0 commit comments