diff --git a/.deployment b/.deployment new file mode 100644 index 000000000..a7670e857 --- /dev/null +++ b/.deployment @@ -0,0 +1,3 @@ +[config] +command = deploy.cmd +SCM_COMMAND_IDLE_TIMEOUT = 3600 diff --git a/ClickToBuild.cmd b/ClickToBuild.cmd index 38d5db736..8ae5f48b6 100644 --- a/ClickToBuild.cmd +++ b/ClickToBuild.cmd @@ -23,7 +23,7 @@ SET project=%2 IF "%target%" == "" SET target=Build IF "%project%" =="" SET project=Orchard.proj -msbuild /t:%target% %project% +msbuild /t:%target% %project% /v:m pause diff --git a/Orchard.proj b/Orchard.proj index 1ca555008..8ad665238 100644 --- a/Orchard.proj +++ b/Orchard.proj @@ -18,10 +18,10 @@ $(MSBuildProjectDirectory)\src\Orchard.Web\Themes $(BuildFolder)\Compile + $(BuildFolder)\Precompiled $(CompileFolder)\_PublishedWebsites $(BuildFolder)\Stage $(BuildFolder)\MsDeploy - $(BuildFolder)\Precompiled $(BuildFolder)\Profiling $(BuildFolder)\Gallery @@ -75,7 +75,6 @@ - @@ -116,10 +115,6 @@ Projects="$(SrcFolder)\Orchard.sln" Targets="Build" Properties="Configuration=Release;OutputPath=$(CompileFolder)" /> - - @@ -195,43 +190,15 @@ - - - - - - - - - - - - - - - - - - - %(Stage-Modules-Names.Identity) - - - %(Stage-Modules-Names.Identity) - + + + + + + + - - %(Stage-Themes-Names.Identity) - - - %(Stage-Themes-Names.Identity) - - - - %(Stage-Themes-Names.Identity) - - + + + + - - + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + diff --git a/deploy.cmd b/deploy.cmd new file mode 100644 index 000000000..53142d03e --- /dev/null +++ b/deploy.cmd @@ -0,0 +1,114 @@ +@if "%SCM_TRACE_LEVEL%" NEQ "4" @echo off + +:: ---------------------- +:: KUDU Deployment Script +:: Version: 0.1.11 +:: ---------------------- + +:: Prerequisites +:: ------------- + +:: Verify node.js installed +where node 2>nul >nul +IF %ERRORLEVEL% NEQ 0 ( + echo Missing node.js executable, please install node.js, if already installed make sure it can be reached from current environment. + goto error +) + +:: Setup +:: ----- + +setlocal enabledelayedexpansion + +SET ARTIFACTS=%~dp0%..\artifacts + +IF NOT DEFINED DEPLOYMENT_SOURCE ( + SET DEPLOYMENT_SOURCE=%~dp0%. +) + +IF NOT DEFINED DEPLOYMENT_TARGET ( + SET DEPLOYMENT_TARGET=%ARTIFACTS%\wwwroot +) + +IF NOT DEFINED NEXT_MANIFEST_PATH ( + SET NEXT_MANIFEST_PATH=%ARTIFACTS%\manifest + + IF NOT DEFINED PREVIOUS_MANIFEST_PATH ( + SET PREVIOUS_MANIFEST_PATH=%ARTIFACTS%\manifest + ) +) + +IF NOT DEFINED KUDU_SYNC_CMD ( + :: Install kudu sync + echo Installing Kudu Sync + call npm install kudusync -g --silent + IF !ERRORLEVEL! NEQ 0 goto error + + :: Locally just running "kuduSync" would also work + SET KUDU_SYNC_CMD=%appdata%\npm\kuduSync.cmd +) +IF NOT DEFINED DEPLOYMENT_TEMP ( + SET DEPLOYMENT_TEMP=%temp%\___deployTemp%random% + SET CLEAN_LOCAL_DEPLOYMENT_TEMP=true +) + +IF DEFINED CLEAN_LOCAL_DEPLOYMENT_TEMP ( + IF EXIST "%DEPLOYMENT_TEMP%" rd /s /q "%DEPLOYMENT_TEMP%" + mkdir "%DEPLOYMENT_TEMP%" +) + +IF NOT DEFINED MSBUILD_PATH ( + SET MSBUILD_PATH=%WINDIR%\Microsoft.NET\Framework\v4.0.30319\msbuild.exe +) + +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +:: Deployment +:: ---------- + +echo Handling .NET Web Application deployment. + +:: 1. Restore NuGet packages +IF /I "" NEQ "" ( + call :ExecuteCmd nuget restore "%DEPLOYMENT_SOURCE%\" + IF !ERRORLEVEL! NEQ 0 goto error +) + +:: 2. Build to the temporary path +call :ExecuteCmd "%MSBUILD_PATH%" "%DEPLOYMENT_SOURCE%\Orchard.proj" /t:Precompiled /v:m +IF !ERRORLEVEL! NEQ 0 goto error + +:: 3. KuduSync +call :ExecuteCmd "%KUDU_SYNC_CMD%" -v 50 -f "%DEPLOYMENT_SOURCE%\build\Precompiled" -t "%DEPLOYMENT_TARGET%" -n "%NEXT_MANIFEST_PATH%" -p "%PREVIOUS_MANIFEST_PATH%" -i ".git;.hg;.deployment;deploy.cmd" +IF !ERRORLEVEL! NEQ 0 goto error + +:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +:: Post deployment stub +IF DEFINED POST_DEPLOYMENT_ACTION call "%POST_DEPLOYMENT_ACTION%" +IF !ERRORLEVEL! NEQ 0 goto error + +goto end + +:: Execute command routine that will echo out when error +:ExecuteCmd +setlocal +set _CMD_=%* +call %_CMD_% +if "%ERRORLEVEL%" NEQ "0" echo Failed exitCode=%ERRORLEVEL%, command=%_CMD_% +exit /b %ERRORLEVEL% + +:error +endlocal +echo An error has occurred during web site deployment. +call :exitSetErrorLevel +call :exitFromFunction 2>nul + +:exitSetErrorLevel +exit /b 1 + +:exitFromFunction +() + +:end +endlocal +echo Finished successfully.