forked from avatsaev/slackin
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Uses ARM template to create a Web App (Free Tier) * When deploying, choose between `Latest` (deploys code from git repo) or `Stable` (deploy from latest published npm package). * Server will be accessible at `<sitename>.azurewebsites.net`
- Loading branch information
Showing
7 changed files
with
377 additions
and
16 deletions.
There are no files selected for viewing
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,130 @@ | ||
{ | ||
"$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#", | ||
"contentVersion": "1.0.0.0", | ||
"parameters": { | ||
"siteName": { | ||
"type": "string", | ||
"metadata": { | ||
"description": "The name of the web app that you wish to create." | ||
} | ||
}, | ||
"hostingPlanName": { | ||
"type": "string", | ||
"metadata": { | ||
"description": "The name of the App Service plan to use for hosting the web app." | ||
} | ||
}, | ||
"siteLocation": { | ||
"type": "string", | ||
"defaultValue": "West US", | ||
"metadata": { | ||
"description": "The location to use for creating the web app and hosting plan. It must be one of the Azure locations that support web apps." | ||
} | ||
}, | ||
"repoURL": { | ||
"type": "string" | ||
}, | ||
"branch": { | ||
"type": "string" | ||
}, | ||
"slackTeamId" : { | ||
"type": "string", | ||
"metadata": { | ||
"description": "Slack Team ID. (e.g. https://{this}.slack.com)" | ||
} | ||
}, | ||
"slackApiToken" : { | ||
"type": "string", | ||
"metadata": { | ||
"description": "Slack API token (find it on https://api.slack.com/web)" | ||
} | ||
}, | ||
"slackinRelease" : { | ||
"type": "string", | ||
"allowedValues": [ | ||
"stable", | ||
"latest" | ||
], | ||
"defaultValue": "stable", | ||
"metadata": { | ||
"description": "Slackin Release to Deploy (stable/latest)" | ||
} | ||
} | ||
}, | ||
"resources": [ | ||
{ | ||
"apiVersion": "2015-08-01", | ||
"name": "[parameters('hostingPlanName')]", | ||
"type": "Microsoft.Web/serverfarms", | ||
"location": "[parameters('siteLocation')]", | ||
"properties": { | ||
}, | ||
"sku": { | ||
"name": "F1" | ||
} | ||
}, | ||
{ | ||
"apiVersion": "2015-08-01", | ||
"name": "[parameters('siteName')]", | ||
"type": "Microsoft.Web/sites", | ||
"location": "[parameters('siteLocation')]", | ||
"dependsOn": [ | ||
"[resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanName'))]" | ||
], | ||
"properties": { | ||
"serverFarmId": "[parameters('hostingPlanName')]" | ||
}, | ||
"resources": [ | ||
{ | ||
"apiVersion": "2015-08-01", | ||
"name": "web", | ||
"type": "config", | ||
"dependsOn": [ | ||
"[resourceId('Microsoft.Web/Sites', parameters('siteName'))]" | ||
], | ||
"properties": { | ||
"siteProperties": { | ||
"webSocketsEnabled": true | ||
} | ||
} | ||
}, | ||
{ | ||
"apiVersion": "2015-08-01", | ||
"name": "appsettings", | ||
"type": "config", | ||
"dependsOn": [ | ||
"[resourceId('Microsoft.Web/Sites', parameters('siteName'))]" | ||
], | ||
"properties": { | ||
"SLACK_SUBDOMAIN": "[parameters('slackTeamId')]", | ||
"SLACK_API_TOKEN": "[parameters('slackApiToken')]", | ||
"SLACKIN_RELEASE": "[parameters('slackinRelease')]", | ||
"WEBSITE_NPM_DEFAULT_VERSION": "3.3.12", | ||
"WEBSITE_NODE_DEFAULT_VERSION": "5.1.1", | ||
"command": "bash scripts/azuredeploy.sh" | ||
} | ||
}, | ||
{ | ||
"apiVersion": "2015-08-01", | ||
"name": "web", | ||
"type": "sourcecontrols", | ||
"dependsOn": [ | ||
"[resourceId('Microsoft.Web/Sites', parameters('siteName'))]", | ||
"[concat('Microsoft.Web/Sites/', parameters('siteName'), '/config/web')]" | ||
], | ||
"properties": { | ||
"RepoUrl": "[parameters('repoURL')]", | ||
"branch": "[parameters('branch')]", | ||
"IsManualIntegration": true | ||
} | ||
} | ||
] | ||
} | ||
], | ||
"outputs": { | ||
"siteUri": { | ||
"type": "string", | ||
"value": "[concat('https://',reference(resourceId('Microsoft.Web/sites', parameters('siteName'))).hostNames[0])]" | ||
} | ||
} | ||
} |
This file contains 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
This file contains 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
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,157 @@ | ||
#!/bin/bash | ||
|
||
# ---------------------- | ||
# Azure KUDU Deployment Script | ||
# Version: 1.0.2 | ||
# ---------------------- | ||
|
||
# Helpers | ||
# ------- | ||
|
||
exitWithMessageOnError () { | ||
if [ ! $? -eq 0 ]; then | ||
echo "An error has occurred during web site deployment." | ||
echo $1 | ||
exit 1 | ||
fi | ||
} | ||
|
||
# Prerequisites | ||
# ------------- | ||
|
||
# Verify node.js installed | ||
hash node 2>/dev/null | ||
exitWithMessageOnError "Missing node.js executable, please install node.js, if already installed make sure it can be reached from current environment." | ||
|
||
# Setup | ||
# ----- | ||
|
||
SCRIPT_DIR="${BASH_SOURCE[0]%\\*}" | ||
SCRIPT_DIR="${SCRIPT_DIR%/*}" | ||
ARTIFACTS=$SCRIPT_DIR/../artifacts | ||
KUDU_SYNC_CMD=${KUDU_SYNC_CMD//\"} | ||
|
||
if [[ ! -n "$DEPLOYMENT_SOURCE" ]]; then | ||
DEPLOYMENT_SOURCE=$SCRIPT_DIR | ||
fi | ||
|
||
if [[ ! -n "$NEXT_MANIFEST_PATH" ]]; then | ||
NEXT_MANIFEST_PATH=$ARTIFACTS/manifest | ||
|
||
if [[ ! -n "$PREVIOUS_MANIFEST_PATH" ]]; then | ||
PREVIOUS_MANIFEST_PATH=$NEXT_MANIFEST_PATH | ||
fi | ||
fi | ||
|
||
if [[ ! -n "$DEPLOYMENT_TARGET" ]]; then | ||
DEPLOYMENT_TARGET=$ARTIFACTS/wwwroot | ||
else | ||
KUDU_SERVICE=true | ||
fi | ||
|
||
if [[ ! -n "$KUDU_SYNC_CMD" ]]; then | ||
# Install kudu sync | ||
echo Installing Kudu Sync | ||
npm install kudusync -g --silent | ||
exitWithMessageOnError "npm failed" | ||
|
||
if [[ ! -n "$KUDU_SERVICE" ]]; then | ||
# In case we are running locally this is the correct location of kuduSync | ||
KUDU_SYNC_CMD=kuduSync | ||
else | ||
# In case we are running on kudu service this is the correct location of kuduSync | ||
KUDU_SYNC_CMD=$APPDATA/npm/node_modules/kuduSync/bin/kuduSync | ||
fi | ||
fi | ||
|
||
# Node Helpers | ||
# ------------ | ||
|
||
# Node/NPM versions | ||
#NODE_EXE="$PROGRAMFILES\\nodejs\\5.1.1\\node.exe" | ||
#NPM_CMD="\"$NODE_EXE\" \"$PROGRAMFILES\\npm\\3.3.12\\node_modules\\npm\\bin\\npm-cli.js\"" | ||
|
||
selectNodeVersion () { | ||
if [[ -n "$KUDU_SELECT_NODE_VERSION_CMD" ]]; then | ||
SELECT_NODE_VERSION="$KUDU_SELECT_NODE_VERSION_CMD \"$DEPLOYMENT_SOURCE\" \"$DEPLOYMENT_TARGET\" \"$DEPLOYMENT_TEMP\"" | ||
eval $SELECT_NODE_VERSION | ||
exitWithMessageOnError "select node version failed" | ||
|
||
if [[ -e "$DEPLOYMENT_TEMP/__nodeVersion.tmp" ]]; then | ||
NODE_EXE=`cat "$DEPLOYMENT_TEMP/__nodeVersion.tmp"` | ||
exitWithMessageOnError "getting node version failed" | ||
fi | ||
|
||
if [[ -e "$DEPLOYMENT_TEMP/.tmp" ]]; then | ||
NPM_JS_PATH=`cat "$DEPLOYMENT_TEMP/__npmVersion.tmp"` | ||
exitWithMessageOnError "getting npm version failed" | ||
fi | ||
|
||
if [[ ! -n "$NODE_EXE" ]]; then | ||
NODE_EXE=node | ||
fi | ||
|
||
NPM_CMD="\"$NODE_EXE\" \"$NPM_JS_PATH\"" | ||
else | ||
NPM_CMD=npm | ||
NODE_EXE=node | ||
fi | ||
} | ||
|
||
# Deployment | ||
# ---------- | ||
|
||
# Select node version | ||
selectNodeVersion | ||
|
||
echo -n "Using Node: " | ||
"${NODE_EXE}" -v | ||
|
||
echo -n "Using npm: " | ||
"${NPM_CMD}" -v | ||
|
||
echo Deploying Slackin: $SLACKIN_RELEASE | ||
|
||
if [[ "$SLACKIN_RELEASE" == "stable" ]]; then | ||
# Stable | ||
echo Installing from npm | ||
|
||
cd "$DEPLOYMENT_TARGET" | ||
|
||
# 1. Install latest release of slackin from npm | ||
eval $NPM_CMD install slackin | ||
|
||
# 2. Copy to root folder | ||
cp -rv node_modules/slackin/* . | ||
|
||
cd - > /dev/null | ||
|
||
else | ||
# Latest (from git repo) | ||
echo Installing from git repo | ||
|
||
# 1. KuduSync | ||
if [[ "$IN_PLACE_DEPLOYMENT" -ne "1" ]]; then | ||
"$KUDU_SYNC_CMD" -v 50 -f "$DEPLOYMENT_SOURCE" -t "$DEPLOYMENT_TARGET" -n "$NEXT_MANIFEST_PATH" -p "$PREVIOUS_MANIFEST_PATH" -i ".git;.hg;.deployment;deploy.sh" | ||
exitWithMessageOnError "Kudu Sync failed" | ||
fi | ||
|
||
# 2. Install npm packages | ||
if [ -e "$DEPLOYMENT_TARGET/package.json" ]; then | ||
echo npm install | ||
cd "$DEPLOYMENT_TARGET" | ||
eval $NPM_CMD install --production | ||
cd - > /dev/null | ||
fi | ||
fi | ||
|
||
|
||
# Post deployment stub | ||
if [[ -n "$POST_DEPLOYMENT_ACTION" ]]; then | ||
POST_DEPLOYMENT_ACTION=${POST_DEPLOYMENT_ACTION//\"} | ||
cd "${POST_DEPLOYMENT_ACTION_DIR%\\*}" | ||
"$POST_DEPLOYMENT_ACTION" | ||
exitWithMessageOnError "post deployment action failed" | ||
fi | ||
|
||
echo "Finished successfully." |
Oops, something went wrong.