UNPKG

4.84 kBPlain TextView Raw
1@if "%SCM_TRACE_LEVEL%" NEQ "4" @echo off
2
3:: ----------------------
4:: KUDU Deployment Script
5:: Version: 1.0.8
6:: ----------------------
7
8:: Prerequisites
9:: -------------
10
11:: Verify node.js installed
12where node 2>nul >nul
13IF %ERRORLEVEL% NEQ 0 (
14 echo Missing node.js executable, please install node.js, if already installed make sure it can be reached from current environment.
15 goto error
16)
17
18:: Setup
19:: -----
20
21setlocal enabledelayedexpansion
22
23SET ARTIFACTS=%~dp0%..\artifacts
24
25IF NOT DEFINED DEPLOYMENT_SOURCE (
26 SET DEPLOYMENT_SOURCE=%~dp0%.
27)
28
29IF NOT DEFINED DEPLOYMENT_TARGET (
30 SET DEPLOYMENT_TARGET=%ARTIFACTS%\wwwroot
31)
32
33IF NOT DEFINED DEPLOYMENT_INTERMEDIATE (
34 SET DEPLOYMENT_INTERMEDIATE=!DEPLOYMENT_TARGET!\..\intermediate
35
36 IF NOT EXIST "!DEPLOYMENT_INTERMEDIATE!" (
37 SET CLEAN_LOCAL_DEPLOYMENT_TEMP=true
38 )
39)
40
41IF NOT DEFINED NEXT_MANIFEST_PATH (
42 SET NEXT_MANIFEST_PATH=%ARTIFACTS%\manifest
43
44 IF NOT DEFINED PREVIOUS_MANIFEST_PATH (
45 SET PREVIOUS_MANIFEST_PATH=%ARTIFACTS%\manifest
46 )
47)
48
49IF NOT DEFINED KUDU_SYNC_CMD (
50 :: Install kudu sync
51 echo Installing Kudu Sync
52 call npm install kudusync -g --silent
53 IF !ERRORLEVEL! NEQ 0 goto error
54
55 :: Locally just running "kuduSync" would also work
56 SET KUDU_SYNC_CMD=%appdata%\npm\kuduSync.cmd
57)
58
59IF NOT DEFINED DEPLOYMENT_TEMP (
60 SET DEPLOYMENT_TEMP=%temp%\___deployTemp%random%
61 SET CLEAN_LOCAL_DEPLOYMENT_TEMP=true
62)
63
64IF DEFINED CLEAN_LOCAL_DEPLOYMENT_TEMP (
65 IF EXIST "%DEPLOYMENT_TEMP%" rd /s /q "%DEPLOYMENT_TEMP%"
66 mkdir "%DEPLOYMENT_TEMP%"
67
68 IF EXIST "%DEPLOYMENT_INTERMEDIATE%" rd /s /q "%DEPLOYMENT_INTERMEDIATE%"
69 mkdir "%DEPLOYMENT_INTERMEDIATE%"
70)
71
72IF NOT DEFINED NODE_EXE SET NODE_EXE=node
73IF NOT DEFINED NPM_CMD SET NPM_CMD=npm
74
75goto Deployment
76
77:: Utility Functions
78:: -----------------
79
80:SelectNodeVersion
81
82IF DEFINED KUDU_SELECT_NODE_VERSION_CMD (
83 :: The following are done only on Windows Azure Websites environment
84 call %KUDU_SELECT_NODE_VERSION_CMD% "%DEPLOYMENT_SOURCE%" "%DEPLOYMENT_TARGET%" "%DEPLOYMENT_TEMP%"
85 IF !ERRORLEVEL! NEQ 0 goto error
86
87 IF EXIST "%DEPLOYMENT_TEMP%\__nodeVersion.tmp" (
88 SET /p NODE_EXE=<"%DEPLOYMENT_TEMP%\__nodeVersion.tmp"
89 IF !ERRORLEVEL! NEQ 0 goto error
90 )
91
92 IF EXIST "%DEPLOYMENT_TEMP%\__npmVersion.tmp" (
93 SET /p NPM_JS_PATH=<"%DEPLOYMENT_TEMP%\__npmVersion.tmp"
94 IF !ERRORLEVEL! NEQ 0 goto error
95 )
96
97 IF NOT DEFINED NODE_EXE (
98 SET NODE_EXE=node
99 )
100
101 SET NPM_CMD="!NODE_EXE!" "!NPM_JS_PATH!"
102) ELSE (
103 SET NPM_CMD=npm
104 SET NODE_EXE=node
105)
106
107goto :EOF
108
109::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
110:: Deployment
111:: ----------
112
113:Deployment
114echo Handling node.js deployment.
115
116ECHO ARTIFACTS=%ARTIFACTS%
117ECHO DEPLOYMENT_TEMP=%DEPLOYMENT_TEMP%
118ECHO CLEAN_LOCAL_DEPLOYMENT_TEMP=%CLEAN_LOCAL_DEPLOYMENT_TEMP%
119ECHO KUDU_SYNC_CMD=%KUDU_SYNC_CMD%
120ECHO DEPLOYMENT_SOURCE=%DEPLOYMENT_SOURCE%
121ECHO DEPLOYMENT_INTERMEDIATE=%DEPLOYMENT_INTERMEDIATE%
122ECHO DEPLOYMENT_TARGET=%DEPLOYMENT_TARGET%
123ECHO NEXT_MANIFEST_PATH=%NEXT_MANIFEST_PATH%
124ECHO PREVIOUS_MANIFEST_PATH=%PREVIOUS_MANIFEST_PATH%
125
126:: 1. KuduSync source files to intermediate folder
127call :ExecuteCmd "%KUDU_SYNC_CMD%" -v 50 -f "%DEPLOYMENT_SOURCE%" -t "%DEPLOYMENT_INTERMEDIATE%" -n "%NEXT_MANIFEST_PATH%" -p "%PREVIOUS_MANIFEST_PATH%" -i ".git;.hg;.deployment;deploy.cmd;.vscode"
128IF !ERRORLEVEL! NEQ 0 goto error
129
130:: 2. Install npm packages
131pushd "%DEPLOYMENT_INTERMEDIATE%"
132
133call :ExecuteCmd !NPM_CMD! install --quiet --ignore-scripts
134IF !ERRORLEVEL! NEQ 0 goto error
135
136call :ExecuteCmd !NPM_CMD! dedupe
137IF !ERRORLEVEL! NEQ 0 goto error
138
139call :ExecuteCmd !NPM_CMD! run rebuild
140IF !ERRORLEVEL! NEQ 0 goto error
141
142popd
143
144:: 3. KuduSync from intermediate folder to target folder
145call :ExecuteCmd "%KUDU_SYNC_CMD%" -v 50 -f "%DEPLOYMENT_INTERMEDIATE%\dist\website" -t "%DEPLOYMENT_TARGET%" -n "%NEXT_MANIFEST_PATH%-intermediate" -p "%PREVIOUS_MANIFEST_PATH%-intermediate" -i ".git;.hg;.deployment;deploy.cmd"
146IF !ERRORLEVEL! NEQ 0 goto error
147
148:: 4. Select node version
149call :SelectNodeVersion
150
151::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
152goto end
153
154:: Execute command routine that will echo out when error
155:ExecuteCmd
156setlocal
157set _CMD_=%*
158call %_CMD_%
159if "%ERRORLEVEL%" NEQ "0" echo Failed exitCode=%ERRORLEVEL%, command=%_CMD_%
160exit /b %ERRORLEVEL%
161
162:error
163endlocal
164echo An error has occurred during web site deployment.
165call :exitSetErrorLevel
166call :exitFromFunction 2>nul
167
168:exitSetErrorLevel
169exit /b 1
170
171:exitFromFunction
172()
173
174:end
175endlocal
176echo Finished successfully.