Integrazione continua in Visual Studio Team Services con i progetti di distribuzione Gruppo di risorse di AzureContinuous integration in Visual Studio Team Services using Azure Resource Group deployment projects

Per distribuire un modello di Azure, eseguire attività in varie fasi, ovvero compilazione, test, copia in Azure (detta anche "staging") e distribuzione del modello.To deploy an Azure template, you perform tasks in various stages: Build, Test, Copy to Azure (also called "Staging"), and Deploy Template. Esistono due modi diversi per distribuire i modelli in Visual Studio Team Services (VS Team Services).There are two different ways to deploy templates to Visual Studio Team Services (VS Team Services). Entrambi i metodi forniscono gli stessi risultati, quindi è opportuno scegliere quello che meglio si adatta al proprio flusso di lavoro.Both methods provide the same results, so choose the one that best fits your workflow.

  1. Aggiungere un singolo passaggio alla definizione di compilazione che esegue lo script di PowerShell incluso nel progetto di distribuzione Gruppo di risorse di Azure (Deploy-AzureResourceGroup.ps1).Add a single step to your build definition that runs the PowerShell script that’s included in the Azure Resource Group deployment project (Deploy-AzureResourceGroup.ps1). Lo script copia gli elementi e quindi distribuisce il modello.The script copies artifacts and then deploys the template.
  2. Aggiungere più istruzioni di compilazione di VS Team Services, ognuna delle quali esegue un'attività della fase.Add multiple VS Team Services build steps, each one performing a stage task.

Questo articolo illustra entrambe le opzioni.This article demonstrates both options. La prima opzione ha il vantaggio di usare lo stesso script usato dagli sviluppatori di Visual Studio e di fornire coerenza durante tutto il ciclo di vita.The first option has the advantage of using the same script used by developers in Visual Studio and providing consistency throughout the lifecycle. La seconda opzione offre una comoda alternativa allo script predefinito.The second option offers a convenient alternative to the built-in script. Entrambe le procedure presuppongono che sia già disponibile un progetto di distribuzione di Visual Studio archiviato in VS Team Services.Both procedures assume you already have a Visual Studio deployment project checked into VS Team Services.

Copiare gli elementi in AzureCopy artifacts to Azure

Indipendentemente dallo scenario, se sono disponibili elementi necessari per la distribuzione del modello, occorre concedere ad Azure Resource Manager l'accesso a tali elementi.Regardless of the scenario, if you have any artifacts that are needed for template deployment, you must give Azure Resource Manager access to them. Questi elementi possono includere file, ad esempio:These artifacts can include files such as:

  • Modelli annidatiNested templates
  • Script di configurazione e script DSCConfiguration scripts and DSC scripts
  • File binari dell'applicazioneApplication binaries

Modelli annidati e script di configurazioneNested Templates and Configuration Scripts

Quando si usano i modelli forniti da Visual Studio, o compilati con frammenti di Visual Studio, lo script di PowerShell non solo prepara gli elementi, ma imposta anche l'URI con parametri per le risorse per le diverse distribuzioni.When you use the templates provided by Visual Studio (or built with Visual Studio snippets), the PowerShell script not only stages the artifacts, it also parameterizes the URI for the resources for different deployments. Lo script copia quindi gli elementi in un contenitore protetto in Azure, crea un token di firma di accesso condiviso per tale contenitore e quindi passa le informazioni alla distribuzione del modello.The script then copies the artifacts to a secure container in Azure, creates a SaS token for that container, and then passes that information on to the template deployment. Per altre informazioni sui modelli annidati, vedere Creare una distribuzione di modelli .See Create a template deployment to learn more about nested templates. Quando si usano le attività in VS Team Services, è necessario selezionare le attività appropriate per la distribuzione del modello e, se necessario, passare i valori dei parametri dal passaggio di gestione temporanea alla distribuzione del modello.When using tasks in VS Team Services, you must select the appropriate tasks for your template deployment and if necessary, pass parameter values from the staging step to the template deployment.

Configurare la distribuzione continua in VS Team ServicesSet up continuous deployment in VS Team Services

Per chiamare lo script di PowerShell in VS Team Services, è necessario aggiornare la definizione di compilazione.To call the PowerShell script in VS Team Services, you need to update your build definition. In breve, ecco i passaggi:In brief, the steps are:

  1. Modificare la definizione di compilazione.Edit the build definition.
  2. Configurare l'autorizzazione di Azure in VS Team Services.Set up Azure authorization in VS Team Services.
  3. Aggiungere un'istruzione di compilazione di Azure PowerShell che fa riferimento allo script di PowerShell nel progetto di distribuzione Gruppo di risorse di Azure.Add an Azure PowerShell build step that references the PowerShell script in the Azure Resource Group deployment project.
  4. Impostare il valore del parametro -ArtifactsStagingDirectory per l'interazione con un progetto compilato in VS Team Services.Set the value of the -ArtifactsStagingDirectory parameter to work with a project built in VS Team Services.

Procedura dettagliata per l'opzione 1Detailed walkthrough for Option 1

Le procedure seguenti illustrano i passaggi necessari per configurare la distribuzione continua in VS Team Services usando una singola attività che esegue lo script PowerShell nel progetto.The following procedures walk you through the steps necessary to configure continuous deployment in VS Team Services using a single task that runs the PowerShell script in your project.

  1. Modificare la definizione di compilazione di VS Team Services e aggiungere un'istruzione di compilazione di Azure PowerShell.Edit your VS Team Services build definition and add an Azure PowerShell build step. Scegliere la definizione di compilazione nella categoria Definizioni di compilazione e quindi scegliere il collegamento Modifica.Choose the build definition under the Build definitions category and then choose the Edit link.

    Modificare la definizione di compilazione

  2. Aggiungere un'istruzione di compilazione di Azure PowerShell alla definizione di compilazione e quindi scegliere il pulsante Aggiungi istruzione di compilazione....Add a new Azure PowerShell build step to the build definition and then choose the Add build step… .button.

    Aggiungere un'istruzione di compilazione

  3. Scegliere la categoria Deploy task (Distribuisci attività), selezionare l'attività Azure PowerShell e quindi scegliere il pulsante Aggiungi.Choose the Deploy task category, select the Azure PowerShell task, and then choose its Add button.

    Aggiungere attività

  4. Scegliere l'istruzione di compilazione di Azure PowerShell e quindi compilare i relativi valori.Choose the Azure PowerShell build step and then fill in its values.

    1. Se è già stato aggiunto un endpoint di servizio di Azure a VS Team Services, scegliere la sottoscrizione nella casella di riepilogo a discesa Sottoscrizione Azure e quindi passare alla sezione successiva.If you already have an Azure service endpoint added to VS Team Services, choose the subscription in the Azure Subscription drop-down list box and then skip to the next section.

      Se non si ha un endpoint di servizio di Azure in VS Team Services, è necessario aggiungerne uno.If you don’t have an Azure service endpoint in VS Team Services, you need to add one. Questa sottosezione illustra il processo.This subsection takes you through the process. Se l'account Azure usa un account Microsoft, ad esempio Hotmail, è necessario eseguire i passaggi seguenti per ottenere un'autenticazione dell'entità servizio.If your Azure account uses a Microsoft account (such as Hotmail), you must take the following steps to get a Service Principal authentication.

    2. Scegliere il collegamento Gestisci accanto all'elenco a discesa Sottoscrizione Azure.Choose the Manage link next to the Azure Subscription drop-down list box.

      Gestire le sottoscrizioni di Azure

    3. Scegliere Azure nell'elenco a discesa Nuovo endpoint servizio.Choose Azure in the New Service Endpoint drop-down list box.

      Nuovo endpoint di servizio

    4. Nella finestra di dialogo Aggiungi sottoscrizione di Azure selezionare l'opzione Entità servizio.In the Add Azure Subscription dialog box, select the Service Principal option.

      Oggetto entità servizio

    5. Aggiungere le informazioni sulla sottoscrizione di Azure nella finestra di dialogo Aggiungi sottoscrizione di Azure .Add your Azure subscription information to the Add Azure Subscription dialog box. È necessario specificare gli elementi seguenti:You need to provide the following items:

      • ID sottoscrizioneSubscription Id
      • Nome sottoscrizioneSubscription Name
      • ID entità servizioService Principal Id
      • Chiave entità servizioService Principal Key
      • ID tenantTenant Id
    6. Aggiungere un nome a propria scelta nella casella Sottoscrizione .Add a name of your choice to the Subscription name box. Questo valore verrà visualizzato in seguito nell'elenco a discesa Sottoscrizione Azure in VS Team Services.This value appears later in the Azure Subscription drop-down list in VS Team Services.
    7. Se non si conosce l'ID sottoscrizione di Azure, è possibile usare uno dei seguenti comandi per ottenerlo.If you don’t know your Azure subscription ID, you can use one of the following commands to retrieve it.

      Per gli script di Azure PowerShell usare:For PowerShell scripts, use:

      Get-AzureRmSubscription

      Per l'interfaccia della riga di comando di Azure usare:For Azure CLI, use:

      azure account show

    8. Per ottenere un ID entità servizio, una chiave entità servizio e un ID tenant, seguire la procedura in Usare il portale per creare un'applicazione Active Directory e un'entità servizio o Authenticating a service principal with Azure Resource Manager (Autenticazione di un'entità servizio con Azure Resource Manager).To get a Service Principal ID, Service Principal Key, and Tenant ID, follow the procedure in Create Active Directory application and service principal using portal or Authenticating a service principal with Azure Resource Manager.
    9. Aggiungere i valori di ID entità servizio, chiave entità servizio e ID tenant alla finestra di dialogo Aggiungi sottoscrizione di Azure, quindi scegliere il pulsante OK.Add the Service Principal ID, Service Principal Key, and Tenant ID values to the Add Azure Subscription dialog box and then choose the OK button.

      Ora è disponibile un'entità servizio valida da usare per eseguire lo script di Azure PowerShell.You now have a valid Service Principal to use to run the Azure PowerShell script.

  5. Modificare la definizione di compilazione e scegliere l'istruzione di compilazione Azure PowerShell .Edit the build definition and choose the Azure PowerShell build step. Selezionare la sottoscrizione nella casella di riepilogo a discesa Sottoscrizione Azure.Select the subscription in the Azure Subscription drop-down list box. Se la sottoscrizione non viene visualizzata, scegliere il pulsante Aggiorna accanto al collegamento Gestisci.(If the subscription doesn't appear, choose the Refresh button next the Manage link.)

    Configurare l'attività di compilazione di Azure PowerShell

  6. Fornire un percorso per lo script di PowerShell Deploy-AzureResourceGroup.ps1.Provide a path to the Deploy-AzureResourceGroup.ps1 PowerShell script. A tale scopo, scegliere il pulsante con i puntini di sospensione (...) accanto alla casella Percorso script, passare allo script di PowerShell Deploy-AzureResourceGroup.ps1 nella cartella Script del progetto, selezionarlo e quindi scegliere OK.To do this, choose the ellipsis (…) button next to the Script Path box, navigate to the Deploy-AzureResourceGroup.ps1 PowerShell script in the Scripts folder of your project, select it, and then choose the OK button.

    Selezionare il percorso dello script

  7. Dopo aver selezionato lo script, aggiornare il percorso dello script in modo che venga eseguito da Build.StagingDirectory, la stessa directory su cui è impostato ArtifactsLocation .After you select the script, update the path to the script so that it’s run from the Build.StagingDirectory (the same directory that ArtifactsLocation is set to). A questo scopo è possibile aggiungere "$(Build.StagingDirectory)/" all'inizio del percorso dello script.You can do this by adding “$(Build.StagingDirectory)/” to the beginning of the script path.

    Modificare il percorso dello script

  8. Nella casella Argomenti script immettere i parametri seguenti, su una sola riga.In the Script Arguments box, enter the following parameters (in a single line). Quando si esegue lo script in Visual Studio, è possibile vedere come vengono usati i parametri nella finestra Output .When you run the script in Visual Studio, you can see how VS uses the parameters in the Output window. Si può usare questa finestra come punto di partenza per impostare i valori dei parametri nell'istruzione di compilazione.You can use this as a starting point for setting the parameter values in your build step.

    ParametroParameter DescrizioneDescription
    -ResourceGroupLocation-ResourceGroupLocation Valore dell'area geografica in cui si trova il gruppo di risorse, ad esempio eastus o 'East US'.The geo-location value where the resource group is located, such as eastus or 'East US'. Aggiungere virgolette singole se nel nome è presente uno spazio. Per altre informazioni, vedere Aree di Azure.(Add single quotes if there's a space in the name.) See Azure Regions for more information.
    -ResourceGroupName-ResourceGroupName Nome del gruppo di risorse usato per la distribuzione.The name of the resource group used for this deployment.
    -UploadArtifacts-UploadArtifacts Questo parametro, se presente, specifica che gli elementi devono essere caricati in Azure dal sistema locale.This parameter, when present, specifies that artifacts that need to be uploaded to Azure from the local system. È sufficiente impostare questa opzione se la distribuzione del modello richiede elementi aggiuntivi che si prevede di preparare usando lo script di PowerShell, ad esempio gli script di configurazione o i modelli annidati.You only need to set this switch if your template deployment requires extra artifacts that you want to stage using the PowerShell script (such as configuration scripts or nested templates).
    -StorageAccountName-StorageAccountName Nome dell'account di archiviazione usato per la preparazione degli elementi per questa distribuzione.The name of the storage account used to stage artifacts for this deployment. Questo parametro viene usato solo se si sta eseguendo la gestione temporanea di elementi per la distribuzione.This parameter is only used if you are staging artifacts for deployment. Se questo parametro viene specificato, viene creato un nuovo account di archiviazione, se lo script non ne ha creato uno durante una distribuzione precedente.If this parameter is supplied, a new storage account is created if the script has not created one during a previous deployment. Se il parametro viene specificato, l'account di archiviazione deve esistere già.If the parameter is specified, the storage account must already exist.
    -StorageAccountResourceGroupName-StorageAccountResourceGroupName Nome del gruppo di risorse associato all'account di archiviazione.The name of the resource group associated with the storage account. Questo parametro è obbligatorio solo se si specifica un valore per il parametro StorageAccountName.This parameter is required only if you provide a value for the StorageAccountName parameter.
    -TemplateFile-TemplateFile Percorso del file modello nel progetto di distribuzione del gruppo di risorse di Azure.The path to the template file in the Azure Resource Group deployment project. Per maggiore flessibilità, usare un percorso relativo alla posizione dello script di PowerShell per questo parametro, invece di un percorso assoluto.To enhance flexibility, use a path for this parameter that is relative to the location of the PowerShell script instead of an absolute path.
    -TemplateParametersFile-TemplateParametersFile Percorso del file modello nel progetto di distribuzione Gruppo di risorse di Azure.The path to the parameters file in the Azure Resource Group deployment project. Per maggiore flessibilità, usare un percorso relativo alla posizione dello script di PowerShell per questo parametro, invece di un percorso assoluto.To enhance flexibility, use a path for this parameter that is relative to the location of the PowerShell script instead of an absolute path.
    -ArtifactStagingDirectory-ArtifactStagingDirectory Questo parametro indica allo script di PowerShell la cartella da cui devono essere copiati i file binari del progetto.This parameter lets the PowerShell script know the folder from where the project’s binary files should be copied. Il valore sostituisce quello predefinito usato dallo script di PowerShell.This value overrides the default value used by the PowerShell script. Per l'uso di VS Team Services, impostare il valore su: -ArtifactStagingDirectory $(Build.StagingDirectory)For VS Team Services use, set the value to: -ArtifactStagingDirectory $(Build.StagingDirectory)

    Ecco un esempio di argomenti dello script, la riga è interrotta per facilitare la lettura:Here’s a script arguments example (line broken for readability):

    -ResourceGroupName 'MyGroup' -ResourceGroupLocation 'eastus' -TemplateFile '..\templates\azuredeploy.json' 
    -TemplateParametersFile '..\templates\azuredeploy.parameters.json' -UploadArtifacts -StorageAccountName 'mystorageacct' 
    –StorageAccountResourceGroupName 'Default-Storage-EastUS' -ArtifactStagingDirectory '$(Build.StagingDirectory)'    
    

    Al termine, la casella Argomenti script sarà simile all'elenco seguente:When you’re finished, the Script Arguments box should resemble the following list:

    Argomenti script

  9. Dopo aver aggiunto tutti gli elementi richiesti per l'istruzione di compilazione di Azure PowerShell, scegliere il pulsante Accoda compilazione per compilare il progetto.After you’ve added all the required items to the Azure PowerShell build step, choose the Queue build button to build the project. La schermata Compilazione mostra l'output dello script di PowerShell.The Build screen shows the output from the PowerShell script.

Procedura dettagliata per l'opzione 2Detailed walkthrough for Option 2

Le procedure seguenti illustrano i passaggi necessari per configurare la distribuzione continua in VS Team Services usando le attività predefinite.The following procedures walk you through the steps necessary to configure continuous deployment in VS Team Services using the built-in tasks.

  1. Modificare la definizione di compilazione di Visual Studio Team Services per aggiungere due nuove istruzioni di compilazione.Edit your VS Team Services build definition to add two new build steps. Scegliere la definizione di compilazione nella categoria Definizioni di compilazione e quindi scegliere il collegamento Modifica.Choose the build definition under the Build definitions category and then choose the Edit link.

    Modificare la definizione di compilazione

  2. Aggiungere le nuove istruzioni di compilazione alla definizione di compilazione usando Aggiungi istruzione di compilazione...Add the new build steps to the build definition using the Add build step… .button.

    Aggiungere un'istruzione di compilazione

  3. Scegliere la categoria Deploy task (Distribuisci attività), selezionare l'attività Copia dei file di Azure e quindi scegliere il pulsante Aggiungi.Choose the Deploy task category, select the Azure File Copy task, and then choose its Add button.

    Aggiungere l'attività Copia dei file di Azure

  4. Scegliere l'attività Distribuzione gruppo di risorse di Azure, quindi scegliere il pulsante Aggiungi e quindi Chiudi per il catalogo delle attività.Choose the Azure Resource Group Deployment task, then choose its Add button and then Close the Task Catalog.

    Aggiungere attività Distribuzione gruppo di risorse di Azure

  5. Scegliere l'attività Copia dei file di Azure e compilare i relativi valori.Choose the Azure File Copy task and fill in its values.

    Se è già stato aggiunto un endpoint di servizio di Azure a VS Team Services, scegliere la sottoscrizione nell'elenco a discesa Sottoscrizione Azure.If you already have an Azure service endpoint added to VS Team Services, choose the subscription in the Azure Subscription drop-down list box. Se non si dispone di una sottoscrizione vedere l'opzione 1 per istruzioni sull'impostazione di una sottoscrizione in VS Team Services.If you do not have a subscription, see Option 1 for instructions on setting one up in VS Team Services.

    • Origine: immettere $(Build.StagingDirectory)Source - enter $(Build.StagingDirectory)
    • Tipo di connessione ad Azure: selezionare Azure Resource ManagerAzure Connection Type - select Azure Resource Manager
    • Sottoscrizione di Azure Resource Manager: selezionare la sottoscrizione per l'account di archiviazione che si intende usare nell'elenco a discesa Sottoscrizione Azure.Azure RM Subscription - select the subscription for the storage account you want to use in the Azure Subscription drop-down list box. Se la sottoscrizione non viene visualizzata, scegliere il pulsante Aggiorna accanto al collegamento Gestisci.If the subscription doesn't appear, choose the Refresh button next the Manage link.
    • Tipo di destinazione: selezionare Blob di AzureDestination Type - select Azure Blob
    • Account di archiviazione di Resource Manager: selezionare l'account di archiviazione da usare per la gestione temporanea degli elementiRM Storage Account - select the storage account you would like to use for staging artifacts
    • Nome contenitore: immettere il nome del contenitore da usare per la gestione temporanea, che può essere qualsiasi nome di contenitore valido, ma usare un contenitore dedicato a questa definizione di compilazioneContainer Name - enter the name of the container you would like to use for staging; it can be any valid container name, but use one dedicated to this build definition

    Per i valori di output:For the output values:

    • URI contenitore di archiviazione: immettere artifactsLocationStorage Container URI - enter artifactsLocation
    • Token di firma di accesso condiviso contenitore di archiviazione: immettere artifactsLocationSasTokenStorage Container SAS Token - enter artifactsLocationSasToken

    Configurare l'attività Copia dei file di Azure

  6. Scegliere l'istruzione di compilazione di Distribuzione gruppo di risorse di Azure e quindi compilare i relativi valori.Choose the Azure Resource Group Deployment build step and then fill in its values.

    • Tipo di connessione ad Azure: selezionare Azure Resource ManagerAzure Connection Type - select Azure Resource Manager
    • Sottoscrizione di Azure Resource Manager: selezionare la sottoscrizione per la distribuzione nell'elenco a discesa Sottoscrizione Azure.Azure RM Subscription - select the subscription for deployment in the Azure Subscription drop-down list box. In genere, questa sarà la stessa sottoscrizione usata nel passaggio precedenteThis will usually be the same subscription used in the previous step
    • Azione - selezionare Creare o aggiornare un gruppo di risorseAction - select Create or Update Resource Group
    • Gruppo di risorse: selezionare un gruppo di risorse o immettere il nome del nuovo gruppo di risorse per la distribuzioneResource Group - select a resource group or enter the name of a new resource group for the deployment
    • Posizione: selezionare la posizione per il gruppo di risorseLocation - select the location for the resource group
    • Modello: immettere il percorso e il nome del modello da distribuire anteponendo $(Build.StagingDirectory), ad esempio: $(Build.StagingDirectory/DSC-CI/azuredeploy.json)Template - enter the path and name of the template to be deployed prepending $(Build.StagingDirectory), for example: $(Build.StagingDirectory/DSC-CI/azuredeploy.json)
    • Parametri modello: immettere il percorso e il nome dei parametri da usare, anteponendo $(Build.StagingDirectory), ad esempio: $(Build.StagingDirectory/DSC-CI/azuredeploy.parameters.json)Template Parameters - enter the path and name of the parameters to be used, prepending $(Build.StagingDirectory), for example: $(Build.StagingDirectory/DSC-CI/azuredeploy.parameters.json)
    • Esegui override dei parametri del modello: immettere o copiare e incollare il codice seguente:Override Template Parameters - enter or copy and paste the following code:

      -_artifactsLocation $(artifactsLocation) -_artifactsLocationSasToken (ConvertTo-SecureString -String "$(artifactsLocationSasToken)" -AsPlainText -Force)
      

      Configurare l'attività Distribuzione gruppo di risorse di Azure

  7. Dopo avere aggiunto tutti gli elementi richiesti, salvare la definizione di compilazione e scegliere Accoda nuova compilazione nella parte superiore.After you’ve added all the required items, save the build definition and choose Queue new build at the top.

Passaggi successiviNext steps

Per altre informazioni sui gruppi di risorse di Azure e su Azure Resource Manager, vedere Panoramica di Azure Resource Manager.Read Azure Resource Manager overview to learn more about Azure Resource Manager and Azure resource groups.