forked from hackjunction/JunctionApp
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathazure-pipelines-1.yml
158 lines (129 loc) · 5.42 KB
/
azure-pipelines-1.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
146
147
148
149
150
151
152
153
154
155
156
157
158
# Node.js with React
# Build a Node.js project that uses React.
# Add steps that analyze code, save build artifacts, deploy, and more:
# https://docs.microsoft.com/azure/devops/pipelines/languages/javascript
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' # string. Required. Secure File.
- task: CopyFiles@2
displayName: 'copy STAG backendend'
inputs:
SourceFolder: '$(Agent.TempDirectory)'
Contents: BACKEND_ENV_FILE_STAG
TargetFolder: './backend'
- script: mv ./backend/BACKEND_ENV_FILE_STAG ./backend/.env
displayName: 'rename STAG .env'
- task: DownloadSecureFile@1
displayName: 'download STAG frontend'
inputs:
secureFile: 'FRONTEND_ENV_FILE_STAG' # string. Required. Secure File.
- task: CopyFiles@2
displayName: 'copy STAG frontend'
inputs:
SourceFolder: '$(Agent.TempDirectory)'
Contents: FRONTEND_ENV_FILE_STAG
TargetFolder: './frontend'
- script: mv ./frontend/FRONTEND_ENV_FILE_STAG ./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:
- download: 'current'
artifact: 'drop'
#- task: DownloadPipelineArtifact@2
# inputs:
# buildType: 'current'
#project: # string. Required when source == specific. Project.
#definition: # string. Alias: pipeline. Required when source == specific. Build pipeline.
#specificBuildWithTriggering: false # boolean. Alias: preferTriggeringPipeline. Optional. Use when source == specific. When appropriate, download artifacts from the triggering build. Default: false.
#buildVersionToDownload: 'latest' # 'latest' | 'latestFromBranch' | 'specific'. Alias: runVersion. Required when source == specific. Build version to download. Default: latest.
#branchName: 'refs/heads/master' # string. Alias: runBranch. Required when source == specific && runVersion == latestFromBranch. Branch name. Default: refs/heads/master.
#pipelineId: # string. Alias: runId | buildId. Required when source == specific && runVersion == specific. Build.
#tags: # string. Optional. Use when source == specific && runVersion != specific. Build Tags.
#allowPartiallySucceededBuilds: false # boolean. Optional. Use when source == specific && runVersion != specific. Download artifacts from partially succeeded builds. Default: false.
#allowFailedBuilds: false # boolean. Optional. Use when source == specific && runVersion != specific. Download artifacts from failed builds. Default: false.
# artifactName: drop
#itemPattern: '**' # string. Alias: patterns. Matching patterns. Default: **.
#targetPath: '$(Pipeline.Workspace)/drop'
- script: echo initialize, cleanup, backup, install certs
deploy:
steps:
- task: Bash@3
inputs:
targetType: 'inline'
script: |
# Modify deployment script based on the app type
echo "Starting deployment script run"
- task: ExtractFiles@1
inputs:
archiveFilePatterns: '$(Pipeline.Workspace)/drop/$(Build.BuildId).zip'
destinationFolder: '$(Pipeline.Workspace)/japp'
cleanDestinationFolder: true
overwriteExistingFiles: true
#pathToSevenZipTool: # string. Path to 7z utility.
- 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