Skip to content

Instantly share code, notes, and snippets.

@diegohb
Last active November 17, 2019 04:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save diegohb/1e32fa0728110024c904de6c7ac5130b to your computer and use it in GitHub Desktop.
Save diegohb/1e32fa0728110024c904de6c7ac5130b to your computer and use it in GitHub Desktop.
A meta-runner for Teamcity that wraps 3 steps - webapp stop, ftp upload, and webapp start
<?xml version="1.0" encoding="UTF-8"?>
<meta-runner name="Deploy: Azure App Service - FTP">
<description>Deploy to Azure app service via FTP.</description>
<settings>
<parameters>
<param name="app-service.deployUsername" value="" />
<param name="app-service.name" value="" />
<param name="deploy.source.dir" value="**" />
<param name="app-service.resource-group" value="" />
<param name="app-service.slotName" value="" spec="select data_5='qa' label_5='QA' label_3='UAT' data_7='production-2' display='normal' label_7='Production' data_1='dev' label_1='Development' data_3='uat'" />
<param name="ftp.host" value="" />
<param name="ftp.password" value="" spec="password display='normal'" />
</parameters>
<build-runners>
<runner name="Azure-CLI - WebApp Slot UAT - Stop" type="simpleRunner">
<parameters>
<param name="script.content"><![CDATA[azure webapp stop --name "%app-service.name%" --resource-group "%app-service.resource-group%" --slot "%app-service.slotName%"
echo "Sleeping for 60 seconds..."
powershell -c "start-sleep -second 60"]]></param>
<param name="teamcity.step.mode" value="default" />
<param name="use.custom.script" value="true" />
</parameters>
</runner>
<runner name="Upload to UAT Slot" type="ftp-deploy-runner">
<parameters>
<param name="jetbrains.buildServer.deployer.ftp.authMethod" value="USER_PWD" />
<param name="jetbrains.buildServer.deployer.ftp.ftpMode" value="PASSIVE" />
<param name="jetbrains.buildServer.deployer.ftp.securityMode" value="0" />
<param name="jetbrains.buildServer.deployer.ftp.transferMethod" value="AUTO" />
<param name="jetbrains.buildServer.deployer.sourcePath" value="%deploy.source.dir% =&gt; /site/wwwroot" />
<param name="jetbrains.buildServer.deployer.targetUrl" value="%ftp.host%" />
<param name="jetbrains.buildServer.deployer.username" value="%app-service.name%__%app-service.slotName%\%app-service.deployUsername%" />
<param name="secure:jetbrains.buildServer.deployer.password" value="%ftp.password%" />
<param name="teamcity.step.mode" value="execute_if_failed" />
</parameters>
</runner>
<runner name="Azure-CLI - WebApp Slot UAT - Start" type="simpleRunner">
<parameters>
<param name="script.content"><![CDATA[azure webapp start --name "%app-service.name%" --resource-group "%app-service.resource-group%" --slot "%app-service.slotName%"]]></param>
<param name="teamcity.step.mode" value="execute_always" />
<param name="use.custom.script" value="true" />
</parameters>
</runner>
</build-runners>
<requirements>
<ver-more-than id="RQ_9" name="system.agent.azure-cli_version" value="2.0.76" />
</requirements>
</settings>
</meta-runner>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment