部署链接到 GitHub 存储库的 Web 应用

Note

本文涉及的 SDK 和工具是在 Microsoft Corporation 运行的 Azure 服务中使用的,而在中国, Azure 是由 21Vianet 运行的。 请根据需要参阅中国区 Azure 应用程序开发说明

在本主题中,会学习如何创建 Azure Resource Manager 模板,该模板部署链接到 GitHub 存储库项目的 Web 应用。你将了解如何定义要部署的资源以及如何定义执行部署时指定的参数。可将此模板用于自己的部署,或自定义此模板以满足要求。

有关创建模板的详细信息,请参阅创作 Azure 资源管理器模板

有关完整的模板,请参阅链接到 GitHub 的 Web 应用的模板

Note

尽管本文中指的是 Web 应用,但内容同样适用于 API 应用和移动应用。

将部署的内容

使用此模板,你将部署包含 GitHub 中项目代码的 Web 应用。

若要自动运行部署,请单击以下按钮:

部署到 Azure

Note

必须修改从 GitHub 存储库“azure-quickstart-templates”部署的模板,以适应 Azure 中国云环境。例如,替换某些终结点 -- 将“blob.core.windows.net”替换为“blob.core.chinacloudapi.cn”,将“cloudapp.azure.com”替换为“chinacloudapp.cn”。

参数

使用 Azure 资源管理器,可以定义在部署模板时想要指定的值的参数。该模板具有一个名为 Parameters 的部分,其中包含所有参数值。 你应该为随着要部署的项目或要部署到的环境而变化的值定义参数。不要为永远保持不变的值定义参数。每个参数值可在模板中用来定义所部署的资源。

在定义参数时,请使用 allowedValues 字段来指定用户在部署过程中可以提供哪些值。如果在部署过程中未提供任何值,请使用 defaultValue 字段为该参数赋值。

下面介绍模板中的每个参数。

siteName

要创建的网站的名称。

"siteName":{
  "type":"string"
}

hostingPlanName

用于托管网站的 App Service 计划的名称。

"hostingPlanName":{
  "type":"string"
}

sku

托管计划的定价层。

"sku": {
  "type": "string",
  "allowedValues": [
    "F1",
    "D1",
    "B1",
    "B2",
    "B3",
    "S1",
    "S2",
    "S3"
  ],
  "defaultValue": "S1",
  "metadata": {
    "description": "The pricing tier for the hosting plan."
  }
}

模板将定义此参数允许的值,如果未指定任何值,则分配默认值 (S1)。

workerSize

托管计划的实例大小(small、medium 或 large)。

"workerSize":{
  "type":"string",
  "allowedValues":[
    "0",
    "1",
    "2"
  ],
  "defaultValue":"0"
}

模板将定义此参数允许的值(0、1 或 2),如果未指定任何值,则分配默认值 (0)。这些值分别对应于 small、medium 和 large。

repoURL

包含要部署项目的 GitHub 存储库的 URL。此参数包含默认值,但此值仅用于向你展示如何提供存储库的 URL。测试模板时可以使用此值,但使用模板时你将需要为自己的存储库提供 URL。

"repoURL": {
    "type": "string",
    "defaultValue": "https://github.com/davidebbo-test/Mvc52Application.git"
}
Note

这个示例 GitHub 存储库无法正确的在 Azure 中国发布,原因是 Nuget 的 Jquery 包无法正确下载。用户可自行创建一个可用的项目,然后推送到 GitHub。

branch

部署应用程序时要使用的存储库的分支。默认值为 master,但也可输入你想要部署的存储库中任何分支的名称。

"branch": {
    "type": "string",
    "defaultValue": "master"
}

要部署的资源

App Service 计划

创建用于托管网站的服务计划。通过 hostingPlanName 参数提供计划的名称。计划的位置与用于资源组的位置相同。定价层和辅助角色大小在 skuworkerSize 参数中指定

{
  "apiVersion": "2015-08-01",
  "name": "[parameters('hostingPlanName')]",
  "type": "Microsoft.Web/serverfarms",
  "location": "[resourceGroup().location]",
  "sku": {
    "name": "[parameters('sku')]",
    "capacity": "[parameters('workerSize')]"
  },
  "properties": {
    "name": "[parameters('hostingPlanName')]"
  }
},

Web 应用

创建链接到 GitHub 中项目的 Web 应用。

通过 siteName 参数指定 Web 应用的名称,通过 siteLocation 参数指定 Web 应用的位置。在 dependsOn 元素中,该模板将 Web 应用定义为依赖服务托管计划。因为它依赖托管计划,所以只有当托管计划创建完成后才会创建 Web 应用。dependsOn 元素仅用于指定部署顺序。如果未将 Web 应用标记为依赖托管计划,Azure 资源管理器将尝试同时创建两个资源,而如果在创建托管计划之前创建了 Web 应用,则可能会接收到错误。

Web 应用还具有一个子资源,在以下资源部分中对其进行定义。此子资源为使用 Web 应用部署的项目定义源代码管理。在此模板中,源代码管理链接到特定的 GitHub 存储库。使用代码 "RepoUrl":"https://github.com/davidebbo-test/Mvc52Application.git" 定义 GitHub 存储库。如果要使用最少的参数创建可重复部署单个项目的模板,可以对存储库 URL 进行硬编码。如果不对存储库 URL 进行硬编码,可为存储库 URL 添加一个参数,并将该值用于 RepoUrl 属性。

{
  "apiVersion": "2015-08-01",
  "name": "[parameters('siteName')]",
  "type": "Microsoft.Web/sites",
  "location": "[resourceGroup().location]",
  "dependsOn": [
    "[resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanName'))]"
  ],
  "properties": {
    "serverFarmId": "[parameters('hostingPlanName')]"
  },
  "resources": [
    {
      "apiVersion": "2015-08-01",
      "name": "web",
      "type": "sourcecontrols",
      "dependsOn": [
        "[resourceId('Microsoft.Web/Sites', parameters('siteName'))]"
      ],
      "properties": {
        "RepoUrl": "[parameters('repoURL')]",
        "branch": "[parameters('branch')]",
        "IsManualIntegration": true
      }
    }
  ]
}
Note

在 Azure 中国站点,尚无法通过新门户设置 GitHub 凭据。因此,IsManualIntegration 必须是 true

运行部署的命令

若要将资源部署到 Azure,必须登录到 Azure 帐户,并且必须使用 Azure Resource Manager 模块。 若要了解配合使用 Azure Resource Manager 和 Azure PowerShell 或 Azure CLI 的相关信息,请参阅:

以下示例假定你的帐户中已具有一个指定名称的资源组。

PowerShell

New-AzureRmResourceGroupDeployment -TemplateFile path/to/azuredeploy.json -siteName ExampleSite -hostingPlanName ExamplePlan -siteLocation "China North" -ResourceGroupName ExampleDeployGroup

Azure CLI

azure group deployment create -g {resource-group-name} --template-file path/to/azuredeploy.json

Azure CLI 2.0(预览版)

Note

在 Azure 中国区使用 Azure CLI 2.0 之前,请先运行 az cloud set -n AzureChinaCloud 来改变云环境。如果想切回国际版 Azure,请再次运行 az cloud set -n AzureCloud

az resource group deployment create -g {resource-group-name} --template-file path/to/azuredeploy.json --parameters '@azuredeploy.parameters.json'
Note

有关参数 JSON 文件的内容,请参阅 azuredeploy.parameters.json