Created
December 7, 2016 11:35
-
-
Save m2wasabi/0af38219431a1392cc1152dd65e0424d to your computer and use it in GitHub Desktop.
PHP autodeploy with Laravel example
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@if "%SCM_TRACE_LEVEL%" NEQ "4" @echo off | |
:: ---------------------- | |
:: KUDU Deployment Script | |
:: Version: 1.0.9 | |
:: ---------------------- | |
:: 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 | |
) | |
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: | |
:: Deployment | |
:: ---------- | |
echo Handling Basic Web Site deployment. | |
:: 1. KuduSync | |
IF /I "%IN_PLACE_DEPLOYMENT%" NEQ "1" ( | |
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" | |
IF !ERRORLEVEL! NEQ 0 goto error | |
) | |
:: 2. Install composer | |
IF EXIST "%DEPLOYMENT_TARGET%\composer.json" ( | |
pushd "%DEPLOYMENT_TARGET%" | |
IF NOT EXIST "%DEPLOYMENT_TARGET%\composer.phar" ( | |
echo Download composer installer | |
call :ExecuteCmd php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" | |
IF !ERRORLEVEL! NEQ 0 goto error | |
echo Install Composer | |
call :ExecuteCmd php composer-setup.php | |
IF !ERRORLEVEL! NEQ 0 goto error | |
echo Deleting installer | |
call :ExecuteCmd php -r "unlink('composer-setup.php');" | |
IF !ERRORLEVEL! NEQ 0 goto error | |
) | |
echo Composer self update | |
call :ExecuteCmd php composer.phar self-update | |
IF !ERRORLEVEL! NEQ 0 goto error | |
echo Install Composer plugin | |
call :ExecuteCmd php composer.phar global require "hirak/prestissimo" | |
IF !ERRORLEVEL! NEQ 0 goto error | |
echo Composer install | |
call :ExecuteCmd php composer.phar install --no-dev | |
IF !ERRORLEVEL! NEQ 0 goto error | |
popd | |
) | |
:: 3. Laravel update | |
IF EXIST "%DEPLOYMENT_TARGET%\.env.azure" ( | |
pushd "%DEPLOYMENT_TARGET%" | |
echo Copy .env file | |
call :ExecuteCmd copy /Y ".env.azure" ".env" | |
echo Migrate database | |
call :ExecuteCmd php artisan migrate --force | |
IF !ERRORLEVEL! NEQ 0 goto error | |
popd | |
) | |
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: | |
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. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment