Esercitazione - Creare una pipeline per il pacchetto

Completato

In questa parte si otterrà il nuovo codice del team per il progetto Tailspin.SpaceGame.Web.Models che ora è separato dal progetto Tailspin.SpaceGame.Web. Verrà creato un progetto di Azure Pipelines per il progetto Modelli e l'artefatto verrà visualizzato in Azure Artifacts con un numero di versione 1.0.0 nel feed.

Quali modifiche sono state apportate al progetto?

Ricordare che il sito Web di Space Game è un'app ASP.NET Core che usa il modello Model-View-Controller (MVC) per separare i dati dal modo in cui questi vengono visualizzati nell'interfaccia utente. Andy e Mara vogliono spostare le classi del modello in una libreria separata in modo che possano essere usate in più progetti.

A tale scopo, creano un nuovo progetto C#, denominato Tailspin.SpaceGame.Web.Models, che contiene solo le classi del modello. Contemporaneamente rimuovono le classi del modello dal progetto esistente, Tailspin.SpaceGame.Web. Sostituiscono le classi del modello nel progetto esistente con un riferimento al progetto Tailspin.SpaceGame.Web.Models.

Per compilare questi progetti, Andy e Mara usano due pipeline, una per ogni progetto. Il primo progetto è già disponibile insieme alla relativa configurazione associata di Azure Pipelines. A questo punto, si dovrà creare una copia tramite fork del secondo progetto in GitHub e una configurazione di Azure Pipelines per compilarla. Il pacchetto risultante verrà pubblicato in Azure Artifacts.

Preparare Visual Studio Code

In precedenza è stato configurato Visual Studio Code in modo da usare il progetto Tailspin.SpaceGame.Web. Qui si apre una seconda istanza di Visual Studio Code in modo da poter usare il progetto Tailspin.SpaceGame.Web.Models.

  1. Aprire una seconda istanza di Visual Studio Code.

  2. Aprire il terminale integrato in Visual Studio Code.

  3. Usare la directory padre in cui si trova il progetto mslearn-tailspin-spacegame-web. Ecco un esempio che passa alla home directory:

    cd ~
    

Ottenere il codice sorgente

Ottenere il codice sorgente per il progetto Tailspin.SpaceGame.Web.Models da GitHub e configurare Visual Studio Code in modo che sia possibile usare i file.

Creare un fork

Il primo passaggio consiste nel creare una copia tramite fork del repository mslearn-tailspin-spacegame-web-models, in modo da poter usare e modificare i file di origine. Si ricordi che Mara ha rimosso la directory Modelli dal progetto Web e l'ha inserita in un nuovo progetto.

Per creare una copia tramite fork del progetto mslearn-tailspin-spacegame-web-models nell'account GitHub:

  1. In un Web browser passare a GitHub ed eseguire l'accesso.
  2. Passare al progetto mslearn-tailspin-spacegame-web-models.
  3. Seleziona Fork.
  4. Per creare una copia tramite fork del repository nel proprio account, seguire le istruzioni.

Clonare il fork in locale

Per clonare i progetti mslearn-tailspin-spacegame-web-models nel computer:

  1. In GitHub passare al fork del progetto mslearn-tailspin-spacegame-web-models.

  2. Selezionare Codice. Dalla scheda HTTPS scegliere quindi il pulsante accanto all'URL visualizzato per copiare l'URL negli Appunti.

    Screenshot showing the URL and copy button from the GitHub repository.

  3. In Visual Studio Code passare alla finestra del terminale ed eseguire il comando git clone. Sostituire l'URL visualizzato qui con il contenuto degli Appunti.

    git clone https://github.com/your-name/mslearn-tailspin-spacegame-web-models.git
    
  4. Passare alla directory mslearn-tailspin-spacegame-web-models. Si tratta della directory radice del repository.

    cd mslearn-tailspin-spacegame-web-models
    

Aprire il progetto ed esaminare la configurazione

In Visual Studio Code la finestra del terminale punta alla directory radice del progetto mslearn-tailspin-spacegame-web-models. Aprire il progetto da Esplora file per poterne visualizzare la struttura e usare i file.

  1. Il modo più semplice per aprire il progetto è riaprire Visual Studio Code nella directory corrente. A questo scopo, eseguire il comando seguente nel terminale integrato:

    code -r .
    

    In Esplora file vengono visualizzati la directory e l'albero dei file.

  2. Riaprire il terminale integrato. Il terminale posiziona l'utente alla radice del progetto Web.

  3. Aprire il file azure-pipelines.yml.

    Vengono visualizzati i passaggi in cui viene compilato il pacchetto, viene impostata la versione e il pacchetto viene aggiunto ad Azure Artifacts.

    L'attività DotNetCoreCLI@2 compila il progetto:

    - task: DotNetCoreCLI@2
      displayName: 'Build the project - $(buildConfiguration)'
      inputs:
        command: 'build'
        arguments: '--no-restore --configuration $(buildConfiguration)'
        projects: '**/*.csproj'
    

    L'attività DotNetCoreCLI@2 crea un pacchetto del progetto con una versione 1.0.0:

    - task: DotNetCoreCLI@2
      displayName: 'Pack the project - $(buildConfiguration)'
      inputs:
        command: 'pack'
        projects: '**/*.csproj'
        arguments: '--no-build --configuration $(buildConfiguration)'
        versioningScheme: byPrereleaseNumber
        majorVersion: '1'
        minorVersion: '0'
        patchVersion: '0'
    

    Durante lo sviluppo del pacchetto, viene in genere usato lo schema di controllo delle versioni byPrereleaseNumber. che aggiunge un suffisso di versione non definitiva univoca, ad esempio "-CI-20190621-042647", alla fine del numero di versione. Seguendo questo esempio, il numero di versione completo sarà "1.0.0-CI-20190621-042647".

    L'attività NuGetCommand@2 esegue il push del pacchetto nel feed di Azure Artifacts Tailspin.SpaceGame.Web.Models:

    - task: NuGetCommand@2
      displayName: 'Publish NuGet package'
      inputs:
        command: push
        feedPublish: '$(System.TeamProject)/Tailspin.SpaceGame.Web.Models'
        allowPackageConflicts: true
      condition: succeeded()
    

    feedPublish specifica il nome del feed in cui pubblicare. Il formato del nome è <projectName>/<feedName>, dove:

    • $(System.TeamProject) è una variabile predefinita che fa riferimento al nome del progetto, ad esempio "Space Game - web - Dependencies".
    • Tailspin.SpaceGame.Web.Models è il nome del feed specificato nell'esercizio precedente.

Impostare le autorizzazioni

Prima di poter configurare ed eseguire la pipeline, è necessario concedere al servizio compilazione le autorizzazioni corrette.

  1. Passare al progetto in Azure DevOps.
  2. Selezionare Artefatti dal menu a sinistra.
  3. Selezionare l'icona Impostazioni nella parte superiore destra della schermata e quindi selezionare la scheda Autorizzazioni.
  4. Selezionare il pulsante Aggiungi utenti/gruppi.
  5. Nel campo Utenti/gruppi, immettere Space Game - web - Dependencies Build Service, selezionare il ruolo Collaboratore e selezionare Salva.

Creare la pipeline in Azure Pipelines

In un modulo precedente è stato illustrato come configurare Azure Pipelines. Se è necessario un ripasso, passare a Creare una pipeline di compilazione con Azure Pipelines.

Ecco come configurare una seconda pipeline per compilare il pacchetto e caricarlo in Azure Artifacts.

  1. In Azure DevOps passare al progetto Space Game - Web - Dipendenze.

  2. Nel menu a sinistra selezionare Pipeline.

  3. Selezionare Nuova pipeline.

  4. Nella scheda Connect (Connetti) selezionare GitHub.

  5. Nella scheda Seleziona selezionare mslearn-tailspin-spacegame-web-models.

    Immettere le credenziali GitHub, se richieste. Nella pagina visualizzata scorrere fino alla fine e selezionare Approva e installa.

  6. Nella scheda Verifica viene visualizzato il file azure-pipelines.yml della nuova pipeline.

  7. Selezionare Esegui.

  8. Monitorare l'esecuzione della pipeline.

  9. Passare alla scheda Artifacts.

  10. Nell'elenco a discesa in alto selezionare Tailspin.SpaceGame.Web.Models.

    A screenshot showing the location of the package from the dropdown.

    Viene visualizzato il pacchetto risultante, Tailspin.SpaceGame.Web.Models, in Azure Artifacts.

    A screenshot of the package in Azure Artifacts, showing version 1.0 of the package.

  11. Selezionare il pacchetto per passare alla pagina dei dettagli. Quindi, copiare il numero di versione in un percorso che sia facilmente accessibile in un secondo momento.

    A screenshot of Azure Artifacts showing package details. Highlighted is the version number for the package.

    Questo numero di versione verrà usato nell'unità successiva.