Creare una pipeline di integrazione continua con Visual Studio Team Services e IISCreate a continuous integration pipeline with Visual Studio Team Services and IIS

Per automatizzare le fasi di compilazione, test e distribuzione dello sviluppo di un'applicazione, è possibile usare una pipeline per l'integrazione e la distribuzione continui (CI/CD).To automate the build, test, and deployment phases of application development, you can use a continuous integration and deployment (CI/CD) pipeline. In questa esercitazione viene creata una pipeline CI/CD tramite Visual Studio Team Services e una macchina virtuale Windows in Azure che esegue IIS.In this tutorial, you create a CI/CD pipeline using Visual Studio Team Services and a Windows virtual machine (VM) in Azure that runs IIS. Si apprenderà come:You learn how to:

  • pubblicare un'applicazione Web ASP.NET in un progetto di Team ServicesPublish an ASP.NET web application to a Team Services project
  • creare una definizione di compilazione che viene attivata dal commit del codiceCreate a build definition that is triggered by code commits
  • installare e configurare IIS su una macchina virtuale in AzureInstall and configure IIS on a virtual machine in Azure
  • aggiungere l'istanza IIS a un gruppo di distribuzione in Team ServicesAdd the IIS instance to a deployment group in Team Services
  • creare una versione di definizione per pubblicare nuovi pacchetti di distribuzione in IISCreate a release definition to publish new web deploy packages to IIS
  • Testare la pipeline CI/CDTest the CI/CD pipeline

Questa esercitazione richiede il modulo Azure PowerShell 3.6 o versioni successive.This tutorial requires the Azure PowerShell module version 3.6 or later. Eseguire Get-Module -ListAvailable AzureRM per trovare la versione.Run Get-Module -ListAvailable AzureRM to find the version. Se è necessario eseguire l'aggiornamento, vedere Install Azure PowerShell module (Installare il modulo di Azure PowerShell).If you need to upgrade, see Install Azure PowerShell module.

Creare un progetto in Team ServicesCreate project in Team Services

Visual Studio Team Services consente per uno sviluppo e una collaborazione facilitata senza mantenere una soluzione di gestione del codice in locale.Visual Studio Team Services allows for easy collaboration and development without maintaining an on-premises code management solution. Team Services offre i test sul codice cloud, compilazione e informazioni approfondite sull'applicazione.Team Services provides cloud code testing, build, and application insights. È possibile scegliere l'archivio di controllo della versione e l'IDE che meglio si adatta allo sviluppo del codice.You can choose a version control repo and IDE that best fits your code development. Per questa esercitazione, è possibile usare un account gratuito per creare un'app Web ASP.NET di base e una pipeline CI/CD.For this tutorial, you can use a free account to create a basic ASP.NET web app and CI/CD pipeline. Se non si dispone già di un account Team Services, crearne uno.If you do not already have a Team Services account, create one.

Per gestire il processo di commit del codice, compilare e rilasciare le definizioni, creare un progetto in Team Services come indicato di seguito:To manage the code commit process, build definitions, and release definitions, create a project in Team Services as follows:

  1. Aprire il dashboard di Team Services in un browser Web e scegliere Nuovo progetto.Open your Team Services dashboard in a web browser and choose New project.
  2. Immettere myWebApp per il Nome progetto.Enter myWebApp for the Project name. Lasciare tutti gli altri valori predefiniti per usare la versione di controllo Git e il processo dell'elemento di lavoro Agile.Leave all other default values to use Git version control and Agile work item process.
  3. Scegliere l'opzione Share with (Condividi con) Membri del team, quindi selezionare Crea.Choose the option to Share with Team Members, then select Create.
  4. Dopo aver creato il progetto, scegliere l'opzione per esegui l'inizializzazione con un file LEGGIMI o gitignore, quindi Inizializza.Once your project has been created, choose the option to Initialize with a README or gitignore, then Initialize.
  5. All'interno del nuovo progetto scegliere Dashboard nella parte superiore, quindi selezionare Apri in Visual Studio.Inside your new project, choose Dashboards across the top, then select Open in Visual Studio.

Creare un'applicazione Web ASP.NETCreate ASP.NET web application

Nel passaggio precedente, è stato creato un progetto in Team Services.In the previous step, you created a project in Team Services. Il passaggio finale apre il nuovo progetto in Visual Studio.The final step opens your new project in Visual Studio. I commit del codice possono essere gestiti nella finestra Team Explorer.You manage your code commits in the Team Explorer window. Creare una copia locale del nuovo progetto, quindi creare un'applicazione Web ASP.NET da un modello, come indicato di seguito:Create a local copy of your new project, then create an ASP.NET web application from a template as follows:

  1. Selezionare Clona per creare un repository GIT locale del progetto Team Services.Select Clone to create a local git repo of your Team Services project.

    Clonare l'archivio dal progetto Team Services

  2. In Soluzioni selezionare Nuovo.Under Solutions, select New.

    Creare una soluzione per l'applicazione Web

  3. Selezionare i modelli Web, quindi scegliere il modello Applicazione Web ASP.NET.Select Web templates, and then choose the ASP.NET Web Application template.

    1. Immettere un nome per l'applicazione, ad esempio myWebApp, e deselezionare la casella per Crea directory per soluzione.Enter a name for your application, such as myWebApp, and uncheck the box for Create directory for solution.
    2. Se l'opzione è disponibile, deselezionare la casella Aggiungi Application Insights al progetto.If the option is available, uncheck the box to Add Application Insights to project. Application Insight richiede che l'utente autorizzi l'applicazione Web con Application Insights di Azure.Application Insights requires you to authorize your web application with Azure Application Insights. Per semplicità in questa esercitazione ignorare questo processo.To keep it simple in this tutorial, skip this process.
    3. Selezionare OK.Select OK.
  4. Scegliere MVC dall'elenco di modelli.Choose MVC from the template list.
    1. Selezionare Modifica autenticazione, scegliere No Authentication (Nessuna autenticazione), quindi selezionare OK.Select Change Authentication, choose No Authentication, then select OK.
    2. Selezionare OK per creare la soluzione.Select OK to create your solution.
  5. Nella finestra Team Explorer finestra scegliere Modifiche.In the Team Explorer window, choose Changes.

    Eseguire il commit delle modifiche locali nel repository GIT di Team Services

  6. Nella casella di testo del commit immettere un messaggio, ad esempio Commit iniziale.In the commit text box, enter a message such as Initial commit. Scegliere Esegui commit di tutto e sincronizza nel menu a discesa.Choose Commit All and Sync from the drop-down menu.

Creare una definizione di compilazioneCreate build definition

In Team Services usare una definizione di compilazione per spiegare come compilare l'applicazione.In Team Services, you use a build definition to outline how your application should be built. In questa esercitazione viene creata una definizione di base che accetta il codice sorgente, compila la soluzione, quindi crea un pacchetto di distribuzione Web che è possibile usare per eseguire l'app Web in un server IIS.In this tutorial, we create a basic definition that takes our source code, builds the solution, then creates web deploy package we can use to run the web app on an IIS server.

  1. Nel progetto Team Services, nella parte superiore scegliere Compilazione e versione, quindi selezionare Compilazioni.In your Team Services project, choose Build & Release across the top, then select Builds.
  2. Selezionare + Nuova definizione.Select + New definition.
  3. Scegliere il modello ASP.NET (ANTEPRIMA) e selezionare Applica.Choose the ASP.NET (PREVIEW) template and select Apply.
  4. Lasciare l'impostazione predefinita per tutti i valori dell'attività.Leave all the default task values. In Get sources (Ottieni origini) assicurarsi che l'archivio myWebApp e il ramo master siano selezionati.Under Get sources, ensure that the myWebApp repository and master branch are selected.

    Creare la definizione di compilazione nel progetto Team Services

  5. Nella scheda Attivazioni spostare il dispositivo di scorrimento per Enable this trigger (Abilita questo trigger) su Abilitato.On the Triggers tab, move the slider for Enable this trigger to Enabled.

  6. Salvare la definizione di compilazione e accodare una nuova compilazione selezionando Salva e accoda, quindi Salva e accoda di nuovo.Save the build definition and queue a new build by selecting Save & queue , then Save & queue again. Lasciare le impostazioni predefinite e selezionare Accoda.Leave the defaults and select Queue.

A questo punto si può osservare la compilazione che viene pianificata su un agente ospitato e che quindi inizia a compilare.Watch as the build is scheduled on a hosted agent, then begins to build. L'output è simile all'esempio seguente:The output is similar to the following example:

Completamento della compilazione del progetto Team Services

Crea macchina virtualeCreate virtual machine

Per creare una piattaforma su cui eseguire l'app Web ASP.NET, è necessaria una macchina virtuale Windows che esegua IIS.To provide a platform to run your ASP.NET web app, you need a Windows virtual machine that runs IIS. Team Services usa un agente per interagire con l'istanza IIS mentre si esegue il commit del codice e le compilazioni vengono attivate.Team Services uses an agent to interact with the IIS instance as you commit code and builds are triggered.

Creare rapidamente una macchina virtuale Windows Server 2016 tramite questo esempio di script.Create a Windows Server 2016 VM using this script sample. L'esecuzione dello script e la creazione della macchina virtuale richiedono alcuni minuti.It takes a few minutes for the script to run and create the VM. Dopo aver creato la macchina virtuale, aprire la porta 80 per il traffico Web con Add-AzureRmNetworkSecurityRuleConfig come indicato di seguito:Once the VM has been created, open port 80 for web traffic with Add-AzureRmNetworkSecurityRuleConfig as follows:

Get-AzureRmNetworkSecurityGroup `
  -ResourceGroupName $resourceGroup `
  -Name "myNetworkSecurityGroup" | `
Add-AzureRmNetworkSecurityRuleConfig `
  -Name "myNetworkSecurityGroupRuleWeb" `
  -Protocol "Tcp" `
  -Direction "Inbound" `
  -Priority "1001" `
  -SourceAddressPrefix "*" `
  -SourcePortRange "*" `
  -DestinationAddressPrefix "*" `
  -DestinationPortRange "80" `
  -Access "Allow" | `
Set-AzureRmNetworkSecurityGroup

Per collegare la macchina virtuale, ottenere l'indirizzo IP pubblico con Get-AzureRmPublicIPAddress come indicato di seguito:To connect to your VM, obtain the public IP address with Get-AzureRmPublicIpAddress as follows:

Get-AzureRmPublicIpAddress -ResourceGroupName $resourceGroup | Select IpAddress

Creare una sessione di desktop remoto per la macchina virtuale:Create a remote desktop session to your VM:

mstsc /v:<publicIpAddress>

Nella macchina virtuale aprire un prompt dei comandi Administrator PowerShell (Amministratore PowerShell).On the VM, open an Administrator PowerShell command prompt. Installare IIS e le funzionalità .NET necessarie come segue:Install IIS and required .NET features as follows:

Install-WindowsFeature Web-Server,Web-Asp-Net45,NET-Framework-Features

Creare un gruppo di distribuzioneCreate deployment group

Per escludere il pacchetto di distribuzione Web al server IIS, definire un gruppo di distribuzione in Team Services.To push out the web deploy package to the IIS server, you define a deployment group in Team Services. Questo gruppo consente di specificare i server a cui sono indirizzate le nuove compilazioni quando si esegue il commit del codice a Team Services e vengono completate le compilazioni.This group allows you to specify which servers are the target of new builds as you commit code to Team Services and builds are completed.

  1. In Team Services scegliere Build & Release (Compilazione e versione) e quindi selezionare Gruppi di distribuzione.In Team Services, choose Build & Release and then select Deployment groups.
  2. Scegliere Aggiungi gruppo di distribuzione.Choose Add Deployment group.
  3. Immettere un nome per il gruppo, ad esempio myIIS, quindi selezionare Crea.Enter a name for the group, such as myIIS, then select Create.
  4. Nella sezione Registra computer assicurarsi che Windows sia selezionato, quindi selezionare la casella Use a personal access token in the script for authentication (Usare un token di accesso personale nello script per l'autenticazione).In the Register machines section, ensure Windows is selected, then check the box to Use a personal access token in the script for authentication.
  5. Selezionare Copy script to clipboard (Copia lo script negli appunti).Select Copy script to clipboard.

Aggiungere la macchina virtuale IIS al gruppo di distribuzioneAdd IIS VM to the deployment group

Una volta creato il gruppo di distribuzione, aggiungere Tutte le istanze IIS al gruppo.With the deployment group created, add each IIS instance to the group. Team Services genera uno script che scarica e configura un agente nella macchina virtuale che riceve i nuovi pacchetti di distribuzione Web e li applica a IIS.Team Services generates a script that downloads and configures an agent on the VM that receives new web deploy packages then applies it to IIS.

  1. Tornando alla sessione Administrator PowerShell (Amministratore PowerShell) nella macchina virtuale incollare ed eseguire lo script copiato da Team Services.Back in the Administrator PowerShell session on your VM, paste and run the script copied from Team Services.
  2. Quando viene richiesto di configurare i tag per l'agente, scegliere Y e immettere web.When prompted to configure tags for the agent, choose Y and enter web.
  3. Quando richiesto per l'account utente, premere Invio per accettare le impostazioni predefinite.When prompted for the user account, press Return to accept the defaults.
  4. Attendere che lo script termini con un messaggio Service vstsagent.account.computername started successfully (Servizio vstsagent.account.computername avviato correttamente).Wait for the script to finish with a message Service vstsagent.account.computername started successfully.
  5. Nella pagina Gruppi di distribuzione del menu Build & Release (Compilazione e versione) aprire il gruppo di distribuzione myIIS.In the Deployment groups page of the Build & Release menu, open the myIIS deployment group. Nella scheda Computer verificare che la macchina virtuale sia presente.On the Machines tab, verify that your VM is listed.

    Macchina virtuale aggiunta correttamente al gruppo di distribuzione di Team Services

Creare una definizione della versioneCreate release definition

Per pubblicare le compilazioni, creare una definizione di versione in Team Services.To publish your builds, you create a release definition in Team Services. Questa definizione viene attivata automaticamente dalla corretta compilazione dell'applicazione.This definition is triggered automatically by a successful build of your application. Scegliere il gruppo di distribuzione in cui effettuare il push del pacchetto di distribuzione Web e definire le impostazioni IIS appropriate.You choose the deployment group to push your web deploy package to, and define the appropriate IIS settings.

  1. Scegliere Build & Release (Compilazione e versione), quindi selezionare Compilazioni.Choose Build & Release, then select Builds. Scegliere la definizione di compilazione creata nel passaggio precedente.Choose the build definition created in a previous step.
  2. In Completati di recente scegliere la compilazione più recente, quindi selezionare Versione.Under Recently completed, choose the most recent build, then select Release.
  3. Scegliere per creare una definizione di versione.Choose Yes to create a release definition.
  4. Scegliere il Vuoto modello, quindi selezionare Avanti.Choose the Empty template, then select Next.
  5. Verificare che la definizione di compilazione del progetto e dell'origine vengano popolati con il progetto.Verify the project and source build definition are populated with your project.
  6. Selezionare la casella di controllo Distribuzione continua, quindi selezionare Crea.Select the Continuous deployment check box, then select Create.
  7. Selezionare la casella di riepilogo a discesa accanto a + Add tasks (+ Aggiungi attività) e scegliere Aggiungi una fase per gruppo di distribuzione.Select the drop-down box next to + Add tasks and choose Add a deployment group phase.

    Aggiunta di attività alla definizione di versione in Team Services

  8. Scegliere Aggiungi accanto a IIS Web App Deploy(Preview) (Distribuzione dell'app Web IIS - Anteprima), quindi selezionare Chiudi.Choose Add next to IIS Web App Deploy(Preview), then select Close.

  9. Selezionare l'attività principale Esegui su gruppo di distribuzione.Select the Run on deployment group parent task.

    1. Per Gruppo di distribuzione, selezionare il gruppo di distribuzione creato in precedenza, ad esempio myIIS.For Deployment Group, select the deployment group you created earlier, such as myIIS.
    2. Nella casella Tag computer selezionare Aggiungi e scegliere il tag web.In the Machine tags box, select Add and choose the web tag.

      Attività del gruppo di distribuzione della definizione di versione per IIS

  10. Selezionare l'attività Deploy: IIS Web App Deploy (Distribuzione: distribuzione dell'app Web IIS) per configurare le impostazioni dell'istanza IIS come descritto di seguito:Select the Deploy: IIS Web App Deploy task to configure your IIS instance settings as follows:

    1. Per Nome del sito Web, immettere Sito Web predefinito.For Website Name, enter Default Web Site.
    2. Lasciare tutte le altre impostazioni predefinite.Leave all the other default settings.
  11. Scegliere Slava, quindi selezionare OK due volte.Choose Save, then select OK twice.

Creare e pubblicare una versioneCreate a release and publish

È ora possibile effettuare il push del pacchetto di distribuzione Web come una nuova versione.You can now push your web deploy package as a new release. Questo passaggio comunica con l'agente in ogni istanza che fa parte del gruppo di distribuzione, effettua il push del pacchetto di distribuzione Web, quindi configura IIS per eseguire l'applicazione Web aggiornata.This step communicates with the agent on each instance that is part of the deployment group, pushes the web deploy package, then configures IIS to run the updated web application.

  1. Nella definizione di versione selezionare + Release (+ Versione), quindi scegliere Crea versione.In your release definition, select + Release, then choose Create Release.
  2. Verificare che la compilazione più recente sia selezionata nell'elenco a discesa, insieme a Distribuzione automatizzata: dopo la creazione della versione.Verify that the latest build is selected in the drop-down list, along with Automated deployment: After release creation. Selezionare Create.Select Create.
  3. Viene visualizzata una piccola intestazione nella parte superiore della definizione di versione, ad esempio È stata creata la versione "Versione-1".A small banner appears across the top of your release definition, such as Release 'Release-1' has been created. Selezionare il collegamento della versione.Select the release link.
  4. Aprire la scheda Log per osservare lo stato della versione.Open the Logs tab to watch the release progress.

    Push del pacchetto di distribuzione Web e versione di Team Services corretti

  5. Dopo aver completato la versione, aprire un Web browser e immettere l'indirizzo IIP pubblico della macchina virtuale.After the release is complete, open a web browser and enter the public IIP address of your VM. L'applicazione Web ASP.NET è in esecuzione.Your ASP.NET web application is running.

    App web ASP.NET in esecuzione sulla macchina virtuale IIS

Testare tutta la pipeline CI/CDTest the whole CI/CD pipeline

Mentre l'applicazione Web è in esecuzione in IIS, testare l'intera pipeline CI/CD.With your web application running on IIS, now try the whole CI/CD pipeline. Dopo aver apportato una modifica in Visual Studio e aver eseguito il commit del codice, viene avviata una compilazione che quindi attiva una versione del pacchetto di distribuzione Web aggiornato in IIS:After you make a change in Visual Studio and commit your code, a build is triggered which then triggers a release of your updated web deploy package to IIS:

  1. Aprire la finestra Esplora soluzioni in Visual Studio.In Visual Studio, open the Solution Explorer window.
  2. Individuare e aprire myWebApp | Viste | Home | Index.cshtmlNavigate to and open myWebApp | Views | Home | Index.cshtml
  3. Modificare la riga 6 affinché si legga:Edit line 6 to read:

    <h1>ASP.NET with VSTS and CI/CD!</h1>

  4. Salvare il file.Save the file.

  5. Aprire la finestra Team Explorer, selezionare il progetto myWebApp, quindi scegliere Modifiche.Open the Team Explorer window, select the myWebApp project, then choose Changes.
  6. Immettere un messaggio di commit, ad esempio Test della pipeline CI/CD, quindi scegliere Esegui commit di tutto e sincronizza dal menu a discesa.Enter a commit message, such as Testing CI/CD pipeline, then choose Commit All and Sync from the drop-down menu.
  7. Nell'area di lavoro di Team Services viene attivata una nuova compilazione dal commit di codice.In Team Services workspace, a new build is triggered from the code commit.
    • Scegliere Build & Release (Compilazione e versione), quindi selezionare Compilazioni.Choose Build & Release, then select Builds.
    • Scegliere la definizione di compilazione, quindi selezionare la compilazione In coda e in esecuzione per osservare l'avanzamento della compilazione.Choose your build definition, then select the Queued & running build to watch as the build progresses.
  8. Quando la compilazione ha esito positivo, viene attivata una nuova versione.Once the build is successful, a new release is triggered.
    • Scegliere Build & Release (Compilazione e versione), quindi Versioni per vedere il pacchetto di distribuzione Web su cui è stato effettuato il push alla macchina virtuale IIS.Choose Build & Release, then Releases to see the web deploy package pushed to your IIS VM.
    • Selezionare l'icona Aggiorna per aggiornare lo stato.Select the Refresh icon to update the status. Quando la colonna Ambienti mostra un segno di spunta verde, significa che la versione è stata distribuita correttamente in IIS.When the Environments column shows a green check mark, the release has successfully deployed to IIS.
  9. Per visualizzare le modifiche applicate, aggiornare il sito Web IIS in un browser.To see your changes applied, refresh your IIS website in a browser.

    App web ASP.NET in esecuzione sulla macchina virtuale IIS dalla pipeline CI/CD

Passaggi successiviNext steps

In questa esercitazione, è stata creata un'applicazione Web ASP.NET in Team Services e sono state configurate le definizioni di versione e compilazione per distribuire i nuovi pacchetti di distribuzione Web a IIS su ogni commit del codice.In this tutorial, you created an ASP.NET web application in Team Services and configured build and release definitions to deploy new web deploy packages to IIS on each code commit. Si è appreso come:You learned how to:

  • pubblicare un'applicazione Web ASP.NET in un progetto di Team ServicesPublish an ASP.NET web application to a Team Services project
  • creare una definizione di compilazione che viene attivata dal commit del codiceCreate a build definition that is triggered by code commits
  • installare e configurare IIS su una macchina virtuale in AzureInstall and configure IIS on a virtual machine in Azure
  • aggiungere l'istanza IIS a un gruppo di distribuzione in Team ServicesAdd the IIS instance to a deployment group in Team Services
  • creare una versione di definizione per pubblicare nuovi pacchetti di distribuzione in IISCreate a release definition to publish new web deploy packages to IIS
  • Testare la pipeline CI/CDTest the CI/CD pipeline

Passare all'esercitazione successiva per apprendere come installare uno stack SQL\IIS\.NET in una coppia di VM Windows.Advance to the next tutorial to learn how to install a SQL\IIS\.NET stack on a pair of Windows VMs.