Exercice - Référencer le package à partir de l’application

Effectué

Dans cette unité, vous obtenez le nouveau code de Tailspin.SpaceGame.Web dont les classes de modèle ont été supprimées. Au lieu de référencer directement les modèles, le code va les référencer à partir du package que vous avez créé dans l’unité précédente.

Voici une liste des étapes :

  • Obtenir le nouveau code à partir d’une branche du dépôt Tailspin.SpaceGame.Web d’origine
  • Référencer le nouveau package Models, version 1.0.0
  • Pour rechercher ce package dans votre flux Azure Artifacts, changez de pipeline de build.
  • Observez le pipeline générer l’application.

Récupérer (fetch) la branche à partir de GitHub

Récupérez la branche models-package à partir de GitHub pour l’extraire ou y basculer.

Cette branche contient le projet Space Game avec lequel vous avez travaillé dans les modules précédents, mais le répertoire Models a été supprimé.

  1. Basculez vers votre copie de Visual Studio Code qui montre le projet Tailspin.SpaceGame.Web.

  2. À partir du terminal, pour récupérer une branche nommée models-package à partir du dépôt Microsoft, exécutez les commandes git suivantes. Ensuite, basculez vers cette branche.

    git fetch upstream models-package
    git checkout -B models-package upstream/models-package
    

    Le format de ces commandes vous permet d’obtenir le code de démarrage à partir du dépôt Microsoft sur GitHub, appelé upstream. Dans quelques instants, vous pousserez (push) cette branche vers votre dépôt GitHub appelé origin.

  3. En guise d’étape facultative, vérifiez que le répertoire Models n’existe plus dans l’Explorateur de fichiers. Au lieu de cela, vous devez avoir Controllers, Views et d’autres répertoires.

Référencer le package Models

  1. Ouvrez le fichier Tailspin.SpaceGame.Web.csproj et ajoutez l’ItemGroup suivant :

    <ItemGroup>
      <PackageReference Include="Tailspin.SpaceGame.Web.Models" Version="1.0.0" />
    </ItemGroup>
    

    Veillez à placer l’ItemGroup à l’intérieur du nœud Project. Votre fichier doit ressembler au suivant :

    <Project Sdk="Microsoft.NET.Sdk.Web">
    
      <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
        <ProjectGuid>{A0C4E31E-AC75-4F39-9F59-0AA19D9B8F46}</ProjectGuid>
      </PropertyGroup>
    
      <ItemGroup>
        <PackageReference Include="Tailspin.SpaceGame.Web.Models" Version="1.0.0" />
      </ItemGroup>
    
      <ItemGroup>
        <Folder Include="wwwroot\images\avatars\" />
      </ItemGroup>
    </Project>
    
  2. Modifiez la version « 1.0.0 » pour ajouter le préfixe de préversion qui a été généré pendant le processus de génération. Voici un exemple :

    <PackageReference Include="Tailspin.SpaceGame.Web.Models" Version="1.0.0-CI-20200610-165738" />
    

    Ceci référence le package Tailspin.SpaceGame.Web.Models que vous avez créé dans Azure Artifacts. Notez le numéro de version, 1.0.0, ainsi que le suffixe de préversion. Cela correspond à la version initiale que vous avez publiée sur Azure Artifacts dans l’unité précédente.

  3. Enregistrez le fichier .

    Notes

    Quand vous enregistrez le fichier, Visual Studio Code peut vous inviter à restaurer les dépendances. Sélectionnez le bouton Restaurer pour restaurer les dépendances.

Modifier la configuration du pipeline

La branche models-package fournit un fichier azure-pipelines.yml initial. Ici, vous allez modifier la configuration du pipeline pour tirer (pull) le package Tailspin.SpaceGame.Web.Models d’Azure Artifacts.

  1. Dans Visual Studio Code, ouvrez azure-pipelines.yml.

  2. Modifiez azure-pipelines.yml comme indiqué ici :

    trigger:
    - '*'
    
    pool:
      vmImage: 'ubuntu-20.04'
      demands:
      - npm
    
    variables:
      buildConfiguration: 'Release'
      wwwrootDir: 'Tailspin.SpaceGame.Web/wwwroot'
      dotnetSdkVersion: '6.x'
    
    steps:
    - task: UseDotNet@2
      displayName: 'Use .NET SDK $(dotnetSdkVersion)'
      inputs:
        version: '$(dotnetSdkVersion)'
    
    - task: NuGetToolInstaller@0
      inputs:
        versionSpec: '5.9.1'
    
    - task: Npm@1
      displayName: 'Run npm install'
      inputs:
        verbose: false
    
    - script: './node_modules/.bin/node-sass $(wwwrootDir) --output $(wwwrootDir)'
      displayName: 'Compile Sass assets'
    
    - task: gulp@1
      displayName: 'Run gulp tasks'
    
    - script: 'echo "$(Build.DefinitionName), $(Build.BuildId), $(Build.BuildNumber)" > buildinfo.txt'
      displayName: 'Write build info'
      workingDirectory: $(wwwrootDir)
    
    - task: NuGetCommand@2
      displayName: 'Restore project dependencies'
      inputs:
        command: 'restore'
        restoreSolution: '**/*.sln'
        feedsToUse: 'select'
        vstsFeed: '$(System.TeamProject)/Tailspin.SpaceGame.Web.Models'
    
    - task: DotNetCoreCLI@2
      displayName: 'Build the project - $(buildConfiguration)'
      inputs:
        command: 'build'
        arguments: '--no-restore --configuration $(buildConfiguration)'
        projects: '**/*.csproj'
    
    - task: DotNetCoreCLI@2
      displayName: 'Publish the project - $(buildConfiguration)'
      inputs:
        command: 'publish'
        projects: '**/*.csproj'
        publishWebProjects: false
        arguments: '--no-build --configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)/$(buildConfiguration)'
        zipAfterPublish: true
    
    - task: PublishBuildArtifacts@1
      displayName: 'Publish Artifact: drop'
      condition: succeeded()
    

    Le code surligné montre l’emplacement où le pipeline restaure les dépendances et recherche celles qui se trouvent éventuellement dans votre flux Azure Artifacts.

  3. Indexez, validez et poussez (push) vos modifications vers GitHub.

    git add .
    git commit -m "Add reference to Models package"
    git push origin models-package
    
  4. Accédez à Azure Pipelines et observez l’exécution de la build. La build récupère votre package Models à partir d’Azure Artifacts et génère le projet avec succès.