Updated the deployment script with an unique name for Service Bus in Azure.
This commit is contained in:
parent
cbb191fb25
commit
6e819e07cb
|
@ -40,13 +40,13 @@ Login-AzureRmAccount
|
||||||
|
|
||||||
$GitPublishingUserName = "tempdeployuser" + [Guid]::NewGuid();
|
$GitPublishingUserName = "tempdeployuser" + [Guid]::NewGuid();
|
||||||
$GitPublishingUserPassword = "socketio123!"
|
$GitPublishingUserPassword = "socketio123!"
|
||||||
$AzureSBNamespace = "SPFxSocketIOServiceBus";
|
$AzureSBNamespace = "ServiceBus" + [Guid]::NewGuid();
|
||||||
$AzureWebAppName = "SPFxSocketIOWebApp"+[Guid]::NewGuid()
|
$AzureWebAppName = "WebApp" + [Guid]::NewGuid()
|
||||||
$AppServicePlanName = "SPFxSocketIOServicePlan"
|
$AppServicePlanName = "ServicePlan"
|
||||||
$TemplateFilePath = ".\azure-deploy.json"
|
$TemplateFilePath = ".\azure-deploy.json"
|
||||||
$AzureResourceGroupLocation = "East US2"
|
$AzureResourceGroupLocation = "East US2"
|
||||||
$AzureResourceGroupName = "SPFxSocketIODemo"
|
$AzureResourceGroupName = "SPFxSocketIODemo"
|
||||||
$AzureRmResourceGroupDeploymentName = "SPFxSocketIODemo"
|
$AzureRmResourceGroupDeploymentName = $AzureResourceGroupName
|
||||||
$ServerCodeFolderLocation = ".\server"
|
$ServerCodeFolderLocation = ".\server"
|
||||||
|
|
||||||
# Set the publishing user and password for the local Git deployment
|
# Set the publishing user and password for the local Git deployment
|
||||||
|
@ -55,93 +55,102 @@ $PropertiesObject = @{
|
||||||
"publishingPassword" = $GitPublishingUserPassword;
|
"publishingPassword" = $GitPublishingUserPassword;
|
||||||
}
|
}
|
||||||
|
|
||||||
Set-AzureRmResource -PropertyObject $PropertiesObject -ResourceId /providers/Microsoft.Web/publishingUsers/web -ApiVersion 2015-08-01 -Force
|
Try {
|
||||||
|
|
||||||
Write-Host -ForegroundColor Magenta "Creating the Azure resource Group [$AzureResourceGroupName]..."
|
Set-AzureRmResource -PropertyObject $PropertiesObject -ResourceId /providers/Microsoft.Web/publishingUsers/web -ApiVersion 2015-08-01 -Force
|
||||||
New-AzureRmResourceGroup -Name $AzureResourceGroupName -Location $AzureResourceGroupLocation
|
|
||||||
|
|
||||||
# Deploy the Azure Resource Group using an ARM template
|
Write-Host -ForegroundColor Magenta "Creating the Azure resource Group [$AzureResourceGroupName]..."
|
||||||
# More information here: https://azure.microsoft.com/en-us/documentation/articles/resource-group-authoring-templates/#resources
|
New-AzureRmResourceGroup -Name $AzureResourceGroupName -Location $AzureResourceGroupLocation
|
||||||
|
|
||||||
$TemplateParameters = @{
|
# Deploy the Azure Resource Group using an ARM template
|
||||||
"ServiceBusNameSpace"=$AzureSBNamespace;
|
# More information here: https://azure.microsoft.com/en-us/documentation/articles/resource-group-authoring-templates/#resources
|
||||||
"AppServicePlanName"= $AppServicePlanName;
|
|
||||||
"SiteName"=$AzureWebAppName;
|
|
||||||
"Location"=$AzureResourceGroupLocation
|
|
||||||
}
|
|
||||||
|
|
||||||
Write-Host -ForegroundColor Magenta "Deploying Azure resources using ARM template..."
|
$TemplateParameters = @{
|
||||||
Test-AzureRmResourceGroupDeployment -ResourceGroupName $AzureResourceGroupName -TemplateFile $TemplateFilePath -TemplateParameterObject $TemplateParameters
|
"ServiceBusNameSpace"=$AzureSBNamespace;
|
||||||
New-AzureRmResourceGroupDeployment -Name $AzureRmResourceGroupDeploymentName -ResourceGroupName $AzureResourceGroupName -TemplateFile $TemplateFilePath -TemplateParameterObject $TemplateParameters
|
"AppServicePlanName"= $AppServicePlanName;
|
||||||
Write-Host -ForegroundColor Green "Done!"
|
"SiteName"=$AzureWebAppName;
|
||||||
|
"Location"=$AzureResourceGroupLocation
|
||||||
Write-Host -ForegroundColor Magenta "Updating Web Application settings..."
|
|
||||||
$CurrentNamespace = Get-AzureSBNamespace -Name $AzureSBNamespace
|
|
||||||
|
|
||||||
# Check if the namespace already exists or needs to be created
|
|
||||||
if ($CurrentNamespace) {
|
|
||||||
# Set the Web Applicatio settings
|
|
||||||
$AppSettings = New-Object Hashtable
|
|
||||||
$AppSettings["AZURE_SERVICEBUS_ACCESS_KEY"]=$CurrentNamespace.ConnectionString
|
|
||||||
|
|
||||||
# Set application settings and enable WebSockets
|
|
||||||
Set-AzureWebsite -Name $AzureWebAppName -AppSettings $AppSettings
|
|
||||||
}
|
|
||||||
Write-Host -ForegroundColor Green "Done!"
|
|
||||||
|
|
||||||
# Deploy the code to the Web Application using Local Git
|
|
||||||
|
|
||||||
# Note: the part below is only valid for this demo. In a real world situation, you may want link to your TFS/GitHub/BitBucket repository instead.
|
|
||||||
# See https://azure.microsoft.com/en-us/documentation/articles/app-service-deploy-local-git/ for more information
|
|
||||||
Write-Host -ForegroundColor Magenta "Deploying the Web Application Node JS code using Local Git..."
|
|
||||||
|
|
||||||
# Go to the location where the code for the server is located and commit/push it to the local git repository of the web application.
|
|
||||||
Push-Location $ServerCodeFolderLocation
|
|
||||||
|
|
||||||
# Remove previous git config if exists
|
|
||||||
if (Test-Path .git) {
|
|
||||||
Remove-Item -Recurse .git -Force
|
|
||||||
}
|
|
||||||
|
|
||||||
git init
|
|
||||||
|
|
||||||
git add -A
|
|
||||||
|
|
||||||
git commit -m "SPFx Socket IO Demo - Server code"
|
|
||||||
|
|
||||||
# Build the git clone URL with embbed password
|
|
||||||
$GitCloneURL = "https://$GitPublishingUserName" + ":$GitPublishingUserPassword@$AzureWebAppName.scm.azurewebsites.net:443/$AzureWebAppName.git"
|
|
||||||
|
|
||||||
# Make sure there is no 502 error and the git URL is up and running (can take few seconds)
|
|
||||||
$Timeout = New-TimeSpan -Minutes 1
|
|
||||||
$sw = [Diagnostics.Stopwatch]::StartNew()
|
|
||||||
|
|
||||||
Write-Host -ForegroundColor Yellow "Wait for the git clone URL is up and running" -NoNewline
|
|
||||||
while ($sw.elapsed -lt $Timeout) {
|
|
||||||
|
|
||||||
if ((Invoke-WebRequest -Uri $GitCloneURL).StatusCode -eq 200) {
|
|
||||||
|
|
||||||
Write-Host "`n"
|
|
||||||
|
|
||||||
git remote add azure $GitCloneURL 2>&1 | %{ "$_" }
|
|
||||||
|
|
||||||
# We force the push to overwrite remote with local files avoiding update conflicts (don't use this in production)
|
|
||||||
|
|
||||||
git push azure master --force 2>&1 | %{ "$_" }
|
|
||||||
|
|
||||||
# Update URLs in the client side code according to the web app name
|
|
||||||
|
|
||||||
Pop-Location
|
|
||||||
|
|
||||||
$files = @(".\client\config\config.json",".\client\src\webparts\realTimeNewsFeed\components\RealTimeNewsFeed.tsx")
|
|
||||||
$files | ForEach-Object { (Get-Content $_) -replace 'https:\/\/(\S*)\.azurewebsites\.net', "https://$AzureWebAppName.azurewebsites.net" | Set-Content $_ }
|
|
||||||
|
|
||||||
Write-Host -ForegroundColor Green "Done!"
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Start-Sleep -Seconds 5
|
Write-Host -ForegroundColor Magenta "Deploying Azure resources using ARM template..."
|
||||||
Write-Host -ForegroundColor Yellow "."
|
Test-AzureRmResourceGroupDeployment -ResourceGroupName $AzureResourceGroupName -TemplateFile $TemplateFilePath -TemplateParameterObject $TemplateParameters
|
||||||
}
|
New-AzureRmResourceGroupDeployment -Name $AzureRmResourceGroupDeploymentName -ResourceGroupName $AzureResourceGroupName -TemplateFile $TemplateFilePath -TemplateParameterObject $TemplateParameters
|
||||||
Write-Warning "The git clone URL timed out!"
|
Write-Host -ForegroundColor Green "Done!"
|
||||||
|
|
||||||
|
Write-Host -ForegroundColor Magenta "Updating Web Application settings..."
|
||||||
|
$CurrentNamespace = Get-AzureSBNamespace -Name $AzureSBNamespace
|
||||||
|
|
||||||
|
# Check if the namespace already exists or needs to be created
|
||||||
|
if ($CurrentNamespace) {
|
||||||
|
# Set the Web Applicatio settings
|
||||||
|
$AppSettings = New-Object Hashtable
|
||||||
|
$AppSettings["AZURE_SERVICEBUS_ACCESS_KEY"]=$CurrentNamespace.ConnectionString
|
||||||
|
|
||||||
|
# Set application settings and enable WebSockets
|
||||||
|
Set-AzureWebsite -Name $AzureWebAppName -AppSettings $AppSettings
|
||||||
|
}
|
||||||
|
Write-Host -ForegroundColor Green "Done!"
|
||||||
|
|
||||||
|
# Deploy the code to the Web Application using Local Git
|
||||||
|
|
||||||
|
# Note: the part below is only valid for this demo. In a real world situation, you may want link to your TFS/GitHub/BitBucket repository instead.
|
||||||
|
# See https://azure.microsoft.com/en-us/documentation/articles/app-service-deploy-local-git/ for more information
|
||||||
|
Write-Host -ForegroundColor Magenta "Deploying the Web Application Node JS code using Local Git..."
|
||||||
|
|
||||||
|
# Go to the location where the code for the server is located and commit/push it to the local git repository of the web application.
|
||||||
|
Push-Location $ServerCodeFolderLocation
|
||||||
|
|
||||||
|
# Remove previous git config if exists
|
||||||
|
if (Test-Path .git) {
|
||||||
|
Remove-Item -Recurse .git -Force
|
||||||
|
}
|
||||||
|
|
||||||
|
git init
|
||||||
|
|
||||||
|
git add -A
|
||||||
|
|
||||||
|
git commit -m "SPFx Socket IO Demo - Server code"
|
||||||
|
|
||||||
|
# Build the git clone URL with embbed password
|
||||||
|
$GitCloneURL = "https://$GitPublishingUserName" + ":$GitPublishingUserPassword@$AzureWebAppName.scm.azurewebsites.net:443/$AzureWebAppName.git"
|
||||||
|
|
||||||
|
# Make sure there is no 502 error and the git URL is up and running (can take few seconds)
|
||||||
|
$Timeout = New-TimeSpan -Minutes 1
|
||||||
|
$sw = [Diagnostics.Stopwatch]::StartNew()
|
||||||
|
|
||||||
|
Write-Host -ForegroundColor Yellow "Wait for the git clone URL is up and running" -NoNewline
|
||||||
|
while ($sw.elapsed -lt $Timeout) {
|
||||||
|
|
||||||
|
if ((Invoke-WebRequest -Uri $GitCloneURL).StatusCode -eq 200) {
|
||||||
|
|
||||||
|
Write-Host "`n"
|
||||||
|
|
||||||
|
git remote add azure $GitCloneURL 2>&1 | %{ "$_" }
|
||||||
|
|
||||||
|
# We force the push to overwrite remote with local files avoiding update conflicts (don't use this in production)
|
||||||
|
|
||||||
|
git push azure master --force 2>&1 | %{ "$_" }
|
||||||
|
|
||||||
|
# Update URLs in the client side code according to the web app name
|
||||||
|
|
||||||
|
Pop-Location
|
||||||
|
|
||||||
|
$files = @(".\client\config\config.json",".\client\src\webparts\realTimeNewsFeed\components\RealTimeNewsFeed.tsx")
|
||||||
|
$files | ForEach-Object { (Get-Content $_) -replace 'https:\/\/(\S*)\.azurewebsites\.net', "https://$AzureWebAppName.azurewebsites.net" | Set-Content $_ }
|
||||||
|
|
||||||
|
Write-Host -ForegroundColor Green "Done!"
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
Start-Sleep -Seconds 5
|
||||||
|
Write-Host -ForegroundColor Yellow "."
|
||||||
|
}
|
||||||
|
Write-Warning "The git clone URL timed out!"
|
||||||
|
|
||||||
|
} Catch {
|
||||||
|
|
||||||
|
$ErrorMessage = $_.Exception.Message
|
||||||
|
Write-Error $ErrorMessage
|
||||||
|
Exit
|
||||||
|
}
|
|
@ -80,7 +80,7 @@ Version|Date|Comments
|
||||||
|
|
||||||
It is recommended to deploy this solution on a test Azure subscription because by default, the script will override the local git deployment credentials configured for your subscription (for the web application provisioning).
|
It is recommended to deploy this solution on a test Azure subscription because by default, the script will override the local git deployment credentials configured for your subscription (for the web application provisioning).
|
||||||
If you want to set you own parameters, update the `Deploy-Solution.ps1` script and replace tokens with your desired configuration.
|
If you want to set you own parameters, update the `Deploy-Solution.ps1` script and replace tokens with your desired configuration.
|
||||||
Notice that some values have to be unique within the whole Azure platform (for instance, the web application name and the deployment user name), that's why we use a random guid each time.
|
Notice that some values have to be unique within the whole Azure platform (for instance the web application name, the deployment user name, etc.), that's why we use a random guid each time.
|
||||||
|
|
||||||
|
|
||||||
```ps
|
```ps
|
||||||
|
|
Loading…
Reference in New Issue