Oefening: een pijplijn voor uw pakket maken

Voltooid

Hier krijgt u de nieuwe code van het team voor het Tailspin.SpaceGame.Web.Models project dat nu los staat van het project Tailspin.SpaceGame.Web. U maakt een Azure Pipelines-project voor het project Modellen en ziet het artefact in Azure Artifacts met een versienummer 1.0.0 in uw feed.

Welke wijzigingen zijn aangebracht in het project?

Zoals u weet, is de Space Game website een ASP.NET Core-app. Er wordt gebruikgemaakt van het MVC-patroon (Model-View-Controller) om gegevens te scheiden van hoe die gegevens worden weergegeven in de gebruikersinterface. Andy en Mara willen de modelklassen verplaatsen naar een afzonderlijke bibliotheek, zodat meerdere projecten deze klassen kunnen gebruiken.

Hiervoor maken ze een nieuw C#-project met de naam Tailspin.SpaceGame.Web.Models dat alleen de modelklassen bevat. Tegelijkertijd verwijderen ze de modelklassen uit hun bestaande project, Tailspin.SpaceGame.Web. Ze vervangen de modelklassen in hun bestaande project door een verwijzing naar het Tailspin.SpaceGame.Web.Models project.

Om deze projecten te bouwen, gebruiken Andy en Mara twee pijplijnen, één voor elk project. U hebt al het eerste project en de bijbehorende Azure Pipelines-configuratie. Hier maakt u een fork van het tweede project op GitHub en maakt u een Azure Pipelines-configuratie om het te bouwen. U publiceert het resulterende pakket naar Azure Artifacts.

Visual Studio Code voorbereiden

Eerder hebt u Visual Studio Code ingesteld voor gebruik met het project Tailspin.SpaceGame.Web. Hier opent u een tweede exemplaar van Visual Studio Code, zodat u kunt werken met het Tailspin.SpaceGame.Web.Models project.

  1. Open een tweede exemplaar van Visual Studio Code.

  2. Open vanuit Visual Studio Code de geïntegreerde terminal.

  3. Navigeer naar de bovenliggende map vanaf waar uw mslearn-tailspin-spacegame-web project zich bevindt. Hier is een voorbeeld dat naar uw thuismap gaat:

    cd ~
    

De broncode ophalen

Haal de broncode op voor het Tailspin.SpaceGame.Web.Models project van GitHub en stel Visual Studio Code in, zodat u met de bestanden kunt werken.

Een fork maken

De eerste stap is het splitsen van de mslearn-tailspin-spacegame-web-models opslagplaats, zodat u met de bronbestanden kunt werken en wijzigen. Onthoud dat Mara de map Models in een nieuw project heeft geplaatst en uit het webproject heeft verwijderd.

Om het mslearn-tailspin-spacegame-web-models project te forken in uw GitHub-account:

  1. Ga in een webbrowser naar GitHub-en meld u aan.
  2. Ga naar het mslearn-tailspin-spacegame-web-models project.
  3. Selecteer Fork-.
  4. Volg de instructies om de repository naar uw account te forken.

Uw fork lokaal klonen

Om de mslearn-tailspin-spacegame-web-models projecten op uw computer te klonen:

  1. Ga op GitHub naar uw fork van het mslearn-tailspin-spacegame-web-models project.

  2. Selecteer Code. Selecteer vervolgens op het tabblad HTTPS de knop naast de URL die wordt weergegeven om de URL naar het klembord te kopiëren.

    schermopname met de URL en de knop Kopiëren uit de GitHub-opslagplaats.

  3. Ga vanuit Visual Studio Code naar het terminalvenster en voer deze git clone opdracht uit. Vervang de URL die wordt weergegeven door de inhoud van het Klembord.

    git clone https://github.com/your-name/mslearn-tailspin-spacegame-web-models.git
    
  4. Ga naar de map mslearn-tailspin-spacegame-web-models. Dit is de hoofdmap van uw opslagplaats.

    cd mslearn-tailspin-spacegame-web-models
    

Open het project en bekijk de configuratie

In Visual Studio Code verwijst uw terminalvenster naar de hoofdmap van het mslearn-tailspin-spacegame-web-models project. Open het project vanuit de Verkenner, zodat u de structuur ervan kunt bekijken en met bestanden kunt werken.

  1. De eenvoudigste manier om het project te openen, is door Visual Studio Code opnieuw te openen in de huidige map. Voer hiervoor de volgende opdracht uit vanuit de geïntegreerde terminal:

    code -r .
    

    U ziet de map en de bestandsstructuur in de verkenner.

  2. Open de geïntegreerde terminal opnieuw. De terminal plaatst u in de hoofdmap van uw webproject.

  3. Open het azure-pipelines.yml-bestand.

    U ziet de stappen waarin het pakket is gebouwd, de versie is ingesteld en het pakket wordt toegevoegd aan Azure Artifacts.

    Met deze DotNetCoreCLI@2-taak wordt het project gebouwd:

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

    Deze DotNetCoreCLI@2-taak verpakt het project met versie 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'
    

    Bij het ontwikkelen van uw pakket is het gebruikelijk om het byPrereleaseNumber versiebeheerschema te gebruiken. Hiermee voegt u een uniek voorvoegsel voor de voorlopige versie toe, zoals '-CI-20190621-042647' aan het einde van het versienummer. In dit voorbeeld is het volledige versienummer 1.0.0-CI-20190621-042647.

    Met deze NuGetCommand@2-taak wordt het pakket naar uw Tailspin.SpaceGame.Web.Models Azure Artifacts-feed gestuurd:

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

    feedPublish geeft de naam van de feed op waarin moet worden gepubliceerd. De indeling van de naam is <projectName>/<feedName>, waarbij:

    • $(System.TeamProject) is een vooraf gedefinieerde variabele die verwijst naar uw projectnaam; Bijvoorbeeld 'Space Game - web - Afhankelijkheden'.
    • Tailspin.SpaceGame.Web.Models is de feednaam die u in de vorige oefening hebt opgegeven.

Machtigingen instellen

Voordat u de pijplijn kunt instellen en uitvoeren, moet u de Build-service de juiste machtigingen geven.

  1. Ga naar uw project in Azure DevOps.
  2. Selecteer Artefacten in het menu aan de linkerkant.
  3. Selecteer het pictogram Instellingen in de rechterbovenhoek van het scherm en selecteer vervolgens het tabblad Machtigingen.
  4. Selecteer de knop Gebruikers/groepen toevoegen.
  5. Voer in het veld Gebruikers/GroepenSpace Game - web - Afhankelijkheden-Buildservicein, selecteer de rol Inzender en selecteer Opslaan.

De pijplijn maken in Azure Pipelines

U hebt geleerd hoe u Azure Pipelines instelt in een eerdere module. Als u een opfriscursus nodig hebt, ga dan naar Een build-pijplijn maken met Azure Pipelines.

U kunt als volgt een tweede pijplijn instellen om het pakket te bouwen en dat pakket uploaden naar Azure Artifacts.

  1. Ga vanuit Azure DevOps naar het Space Game - web - Afhankelijkheden project.

  2. Selecteer in het menu aan de linkerkant Pipelines.

  3. Selecteer Nieuwe pijplijn.

  4. Selecteer op het tabblad ConnectGitHub.

  5. Van het tabblad Select, selecteer mslearn-tailspin-spacegame-web-models.

    Voer uw GitHub-referenties in als u hierom wordt gevraagd. Schuif vanaf de pagina die wordt weergegeven naar beneden en selecteer Goedkeuren eninstalleren.

  6. Op het tabblad Controleren ziet u het azure-pipelines.yml-bestand van de nieuwe pijplijn.

  7. Selecteer Voeruit.

  8. Bekijk de pijplijnuitvoering.

  9. Ga naar het tabblad Artefacten.

  10. Selecteer in de vervolgkeuzelijst bovenaan Tailspin.SpaceGame.Web.Models.

    Een schermopname met de locatie van het pakket in de vervolgkeuzelijst.

    U ziet het resulterende pakket, Tailspin.SpaceGame.Web.Models, in Azure Artifacts.

    Een schermopname van het pakket in Azure Artifacts, met versie 1.0 van het pakket.

  11. Selecteer het pakket om naar de detailpagina te gaan. Kopieer vervolgens het versienummer naar een locatie waar u het later gemakkelijk kunt openen.

    Een schermopname van Azure Artifacts met pakketdetails. Gemarkeerd is het versienummer voor het pakket.

    Je gebruikt dit versienummer in de volgende les.