Distribuire un'app Web collegata a un repository GitHub

In questo argomento si apprenderà come creare un modello di gestione risorse di Azure che consente di distribuire un'app Web collegata a un progetto in un repository GitHub. Verrà illustrato come definire le risorse da distribuire e i parametri specificati quando viene eseguita la distribuzione. È possibile usare questo modello per le proprie distribuzioni o personalizzarlo in base alle esigenze.

Per altre informazioni sulla creazione dei modelli, vedere Creazione di modelli di Gestione risorse di Azure.

Per il modello completo, vedere App Web collegata al modello GitHub.

Nota

Sebbene in questo articolo si faccia riferimento alle app Web, è applicabile anche ad app per le API e app per dispositivi mobili.

Elementi distribuiti

Con questo modello verrà distribuita un'app Web che contiene il codice da un progetto in GitHub.

Per eseguire automaticamente la distribuzione, fare clic sul pulsante seguente:

Distribuzione in Azure

Parametri

Gestione risorse di Azure permette di definire i parametri per i valori da specificare durante la distribuzione del modello. Il modello include una sezione denominata Parametri che contiene tutti i valori dei parametri. È necessario definire un parametro per i valori che variano in base al progetto distribuito o all'ambiente in cui viene distribuito il progetto. Non definire i parametri per i valori che rimangono invariati. Ogni valore di parametro nel modello viene usato per definire le risorse distribuite.

Durante la definizione dei parametri, usare il campo allowedValues per specificare i valori che l'utente può fornire durante la distribuzione. Usare il campo defaultValue per assegnare un valore al parametro, se non viene specificato alcun valore durante la distribuzione.

Di seguito è fornita la descrizione di ogni parametro del modello.

siteName

Il nome dell'app Web che si desidera creare.

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

hostingPlanName

Il nome del piano di servizio app da usare per l'hosting dell'app Web.

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

sku

Il piano tariffario del piano di hosting.

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

Il modello definisce i valori consentiti per questo parametro e assegna un valore predefinito (S1) se non viene specificato alcun valore.

workerSize

Le dimensioni delle istanze del piano di hosting (piccole, medie o grandi dimensioni).

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

Il modello definisce i valori consentiti per questo parametro (0, 1 o 2) e assegna un valore predefinito (0) nel caso in cui non viene specificato alcun valore. I valori corrispondono a piccole, medie e grandi dimensioni.

repoURL

L'URL del repository GitHub che contiene il progetto da distribuire. Questo parametro contiene un valore predefinito, ma questo valore è destinato solo a illustrare come specificare l'URL del repository. È possibile usare questo valore quando si esegue il test del modello, ma è possibile specificare l'URL del proprio repository quando si utilizza il modello.

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

ramo

Ramo dell'archivio da usare per la distribuzione dell'applicazione. Il valore predefinito è il database master, ma è possibile specificare il nome di un ramo nel repository da distribuire.

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

Risorse da distribuire

Piano di servizio app

Consente di creare il piano di servizio per ospitare l'app Web. Fornire il nome del piano tramite il parametro hostingPlanName . Il percorso del piano è identico a quello usato per il gruppo di risorse. Il piano tariffario e le dimensioni dei processi di lavoro sono specificati nei parametri sku e workerSize.

{
  "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')]"
  }
},

App Web

Crea l'app Web collegata al progetto in GitHub.

Il nome dell'app Web viene specificato tramite il parametro siteName e il percorso dell'app Web tramite il parametro siteLocation. Nell'elemento dependsOn il modello consente di definire l'app Web dipendente dal piano di hosting del servizio. Dipendendo dal piano di hosting, l'app Web non viene creata prima del termine della creazione del piano di hosting. L'elemento dependsOn viene usato solo per specificare l'ordine di distribuzione. Se non si contrassegna l'app Web come dipendente dal piano di hosting, Gestione risorse di Azure tenterà di creare entrambe le risorse contemporaneamente. È possibile che si verifichi un errore se l'app Web viene creata prima del piano di hosting.

L'app Web dispone anche di una risorsa figlio che viene definita nella sezione delle risorse riportata di seguito. Questa risorsa figlio consente di definire il controllo del codice sorgente per il progetto distribuito con l'app Web. In questo modello, il controllo del codice sorgente è collegato a un determinato repository GitHub. Il repository GitHub viene definito con il codice "RepoUrl":"https://github.com/davidebbo-test/Mvc52Application.git" È possibile impostare come hardcoded l'URL del repository, se si desidera creare un modello che distribuisce ripetutamente un progetto singolo richiedendo il numero minimo di parametri. Anziché impostare come hardcoded l'URL del repository, è possibile aggiungere un parametro per l'URL del repository e usare tale valore per la proprietà 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
      }
    }
  ]
}

Comandi per eseguire la distribuzione

Per distribuire le risorse in Azure, è necessario aver eseguito l'accesso all'account Azure e usare il modulo Gestione risorse di Azure. Per altre informazioni su come usare Gestione risorse di Azure con Azure PowerShell o l'interfaccia della riga di comando di Azure, vedere:

Gli esempi seguenti presuppongono che nell'account sia già stato creato un gruppo di risorse con il nome specificato.

PowerShell

New-AzureRmResourceGroupDeployment -TemplateUri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/201-web-app-github-deploy/azuredeploy.json -siteName ExampleSite -hostingPlanName ExamplePlan -ResourceGroupName ExampleDeployGroup

Interfaccia della riga di comando di Azure

azure group deployment create -g {resource-group-name} --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/201-web-app-github-deploy/azuredeploy.json

Interfaccia della riga di comando di Azure 2.0

az group deployment create -g {resource-group-name} --template-uri https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/201-web-app-github-deploy/azuredeploy.json --parameters '@azuredeploy.parameters.json'
Nota

Per il contenuto del file JSON dei parametri, vedere azuredeploy.parameters.json.