Skip to content

Commit 3fdb934

Browse files
committed
Azure deployment
1 parent 34781f5 commit 3fdb934

File tree

3 files changed

+150
-1
lines changed

3 files changed

+150
-1
lines changed

.deployment

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
[config]
2+
command = deploy.cmd

deploy.cmd

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
@if "%SCM_TRACE_LEVEL%" NEQ "4" @echo off
2+
3+
:: ----------------------
4+
:: KUDU Deployment Script
5+
:: Version: 0.2.2
6+
:: ----------------------
7+
8+
:: Prerequisites
9+
:: -------------
10+
11+
:: Verify node.js installed
12+
where node 2>nul >nul
13+
IF %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+
21+
setlocal enabledelayedexpansion
22+
23+
SET ARTIFACTS=%~dp0%..\artifacts
24+
25+
IF NOT DEFINED DEPLOYMENT_SOURCE (
26+
SET DEPLOYMENT_SOURCE=%~dp0%.
27+
)
28+
29+
IF NOT DEFINED DEPLOYMENT_TARGET (
30+
SET DEPLOYMENT_TARGET=%ARTIFACTS%\wwwroot
31+
)
32+
33+
IF NOT DEFINED NEXT_MANIFEST_PATH (
34+
SET NEXT_MANIFEST_PATH=%ARTIFACTS%\manifest
35+
36+
IF NOT DEFINED PREVIOUS_MANIFEST_PATH (
37+
SET PREVIOUS_MANIFEST_PATH=%ARTIFACTS%\manifest
38+
)
39+
)
40+
41+
IF NOT DEFINED KUDU_SYNC_CMD (
42+
:: Install kudu sync
43+
echo Installing Kudu Sync
44+
call npm install kudusync -g --silent
45+
IF !ERRORLEVEL! NEQ 0 goto error
46+
47+
:: Locally just running "kuduSync" would also work
48+
SET KUDU_SYNC_CMD=%appdata%\npm\kuduSync.cmd
49+
)
50+
goto Deployment
51+
52+
:: Utility Functions
53+
:: -----------------
54+
55+
:SelectNodeVersion
56+
57+
IF DEFINED KUDU_SELECT_NODE_VERSION_CMD (
58+
:: The following are done only on Windows Azure Websites environment
59+
call %KUDU_SELECT_NODE_VERSION_CMD% "%DEPLOYMENT_SOURCE%" "%DEPLOYMENT_TARGET%" "%DEPLOYMENT_TEMP%"
60+
IF !ERRORLEVEL! NEQ 0 goto error
61+
62+
IF EXIST "%DEPLOYMENT_TEMP%\__nodeVersion.tmp" (
63+
SET /p NODE_EXE=<"%DEPLOYMENT_TEMP%\__nodeVersion.tmp"
64+
IF !ERRORLEVEL! NEQ 0 goto error
65+
)
66+
67+
IF EXIST "%DEPLOYMENT_TEMP%\__npmVersion.tmp" (
68+
SET /p NPM_JS_PATH=<"%DEPLOYMENT_TEMP%\__npmVersion.tmp"
69+
IF !ERRORLEVEL! NEQ 0 goto error
70+
)
71+
72+
IF NOT DEFINED NODE_EXE (
73+
SET NODE_EXE=node
74+
)
75+
76+
SET NPM_CMD="!NODE_EXE!" "!NPM_JS_PATH!"
77+
) ELSE (
78+
SET NPM_CMD=npm
79+
SET NODE_EXE=node
80+
)
81+
82+
goto :EOF
83+
84+
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
85+
:: Deployment
86+
:: ----------
87+
88+
:Deployment
89+
echo Handling node.js deployment.
90+
91+
:: 1. KuduSync
92+
IF /I "%IN_PLACE_DEPLOYMENT%" NEQ "1" (
93+
call :ExecuteCmd "%KUDU_SYNC_CMD%" -v 50 -f "%DEPLOYMENT_SOURCE%" -t "%DEPLOYMENT_TARGET%" -n "%NEXT_MANIFEST_PATH%" -p "%PREVIOUS_MANIFEST_PATH%" -i ".git;.hg;.deployment;deploy.cmd"
94+
IF !ERRORLEVEL! NEQ 0 goto error
95+
)
96+
97+
:: 2. Select node version
98+
call :SelectNodeVersion
99+
100+
:: 3. Install npm packages
101+
IF EXIST "%DEPLOYMENT_TARGET%\package.json" (
102+
pushd "%DEPLOYMENT_TARGET%"
103+
call :ExecuteCmd !NPM_CMD! install --production
104+
IF !ERRORLEVEL! NEQ 0 goto error
105+
popd
106+
)
107+
108+
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
109+
110+
:: Post deployment stub
111+
IF DEFINED POST_DEPLOYMENT_ACTION call "%POST_DEPLOYMENT_ACTION%"
112+
IF !ERRORLEVEL! NEQ 0 goto error
113+
114+
goto end
115+
116+
:: Execute command routine that will echo out when error
117+
:ExecuteCmd
118+
setlocal
119+
set _CMD_=%*
120+
call %_CMD_%
121+
if "%ERRORLEVEL%" NEQ "0" echo Failed exitCode=%ERRORLEVEL%, command=%_CMD_%
122+
exit /b %ERRORLEVEL%
123+
124+
:error
125+
endlocal
126+
echo An error has occurred during web site deployment.
127+
call :exitSetErrorLevel
128+
call :exitFromFunction 2>nul
129+
130+
:exitSetErrorLevel
131+
exit /b 1
132+
133+
:exitFromFunction
134+
()
135+
136+
:end
137+
endlocal
138+
echo Finished successfully.

gulpfile.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ gulp.task('vendor', function() {
3939
// Static files
4040
gulp.task('assets', function() {
4141
src.assets = [
42+
'.deployment',
43+
'deploy.cmd',
4244
'package.json',
4345
'src/assets/**',
4446
'src/content*/**/*.*',
@@ -169,11 +171,18 @@ gulp.task('sync', ['serve'], function(cb) {
169171

170172
// Deploy via Git
171173
gulp.task('deploy', function(cb) {
174+
var http = require('http');
172175
var push = require('git-push');
173176
var remote = argv.production ?
174177
'https://github.com/{user}/{repo}.git' :
175178
'https://github.com/{user}/{repo}-test.git';
176-
push('./build', remote, cb);
179+
push('./build', remote, function() {
180+
http.get('http://{site-name}.azurewebsites.net/', function() { cb(); })
181+
.on('error', function(err) {
182+
console.log($.util.colors.red(err.message));
183+
cb();
184+
});
185+
});
177186
});
178187

179188
// Run PageSpeed Insights

0 commit comments

Comments
 (0)