Ćwiczenie — Tworzenie potoku dla pakietu

Ukończone

W tym miejscu uzyskasz nowy kod zespołu dla projektu Tailspin.SpaceGame.Web.Models , który jest teraz oddzielony od projektu Tailspin.SpaceGame.Web . Utworzysz projekt usługi Azure Pipelines dla projektu Models i zobaczysz artefakt z numerem wersji 1.0.0 w swoim źródle danych w usłudze Azure Artifacts.

Jakie zmiany zostały wprowadzone w projekcie?

Pamiętaj, że witryna internetowa Space Game jest aplikacją ASP.NET Core. Używa wzorca Model-View-Controller (MVC), aby oddzielić dane od sposobu wyświetlania tych danych w interfejsie użytkownika. Andy i Mara chcą przenieść klasy modelu do oddzielnej biblioteki, aby mogło z nich korzystać wiele projektów.

W tym celu tworzą nowy projekt języka C# o nazwie Tailspin.SpaceGame.Web.Models , który zawiera tylko klasy modeli. Jednocześnie usuwają klasy modelu z istniejącego projektu Tailspin.SpaceGame.Web. Zastępują klasy modelu w istniejącym projekcie odwołaniem do projektu Tailspin.SpaceGame.Web.Models.

Aby skompilować te projekty, Andy i Mara używają dwóch potoków, po jednym dla każdego projektu. Masz już pierwszy projekt i skojarzoną z nim konfigurację usługi Azure Pipelines. W tym miejscu utworzysz drugi projekt w usłudze GitHub i utworzysz konfigurację usługi Azure Pipelines, aby ją skompilować. Opublikujesz wynikowy pakiet w usłudze Azure Artifacts.

Przygotowywanie programu Visual Studio Code

Wcześniej skonfigurowaliśmy program Visual Studio Code do pracy z projektem Tailspin.SpaceGame.Web . W tym miejscu otworzysz drugie wystąpienie programu Visual Studio Code, aby móc pracować z projektem Tailspin.SpaceGame.Web.Models .

  1. Otwórz drugie wystąpienie programu Visual Studio Code.

  2. W programie Visual Studio Code otwórz zintegrowany terminal.

  3. Przejdź do katalogu nadrzędnego, z którego znajduje się projekt mslearn-tailspin-spacegame-web . Oto przykład, który przenosi się do katalogu macierzystego:

    cd ~
    

Uzyskiwanie kodu źródłowego

Pobierz kod źródłowy projektu Tailspin.SpaceGame.Web.Models z usługi GitHub i skonfiguruj program Visual Studio Code, aby móc pracować z plikami.

Tworzenie rozwidlenia

Pierwszym krokiem jest utworzenie rozwidlenia repozytorium mslearn-tailspin-spacegame-web-models w celu umożliwienia pracy z plikami źródłowymi i ich modyfikowania. Pamiętaj, że Mara umieściła katalog Models w nowym projekcie i usunęła go z projektu sieci Web.

Aby utworzyć rozwidlenie projektu mslearn-tailspin-spacegame-web-models na koncie usługi GitHub:

  1. W przeglądarce internetowej przejdź do witryny GitHub i zaloguj się.
  2. Przejdź do projektu mslearn-tailspin-spacegame-web-models .
  3. Wybierz pozycję Rozwidlenie.
  4. Aby rozwidlić repozytorium na koncie, postępuj zgodnie z instrukcjami.

Klonowanie rozwidlenia lokalnie

Aby sklonować projekty mslearn-tailspin-spacegame-web-models na komputer:

  1. W witrynie GitHub przejdź do rozwidlenia projektu mslearn-tailspin-spacegame-web-models .

  2. Wybierz pozycję Kod. Następnie na karcie HTTPS wybierz przycisk obok wyświetlanego adresu URL, aby skopiować adres URL do schowka.

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

  3. W programie Visual Studio Code przejdź do okna terminalu i uruchom to git clone polecenie. Zastąp wyświetlany adres URL zawartością schowka.

    git clone https://github.com/your-name/mslearn-tailspin-spacegame-web-models.git
    
  4. Przejdź do katalogu mslearn-tailspin-spacegame-web-models . Jest to katalog główny Twojego repozytorium.

    cd mslearn-tailspin-spacegame-web-models
    

Otwieranie projektu i sprawdzanie konfiguracji

W programie Visual Studio Code okno terminalu wskazuje katalog główny projektu mslearn-tailspin-spacegame-web-models . Otwórz projekt z eksploratora plików, aby wyświetlić jego strukturę i pracować z plikami.

  1. Najprostszym sposobem otwarcia projektu jest ponowne otwarcie programu Visual Studio Code w bieżącym katalogu. W tym celu uruchom następujące polecenie w zintegrowanym terminalu:

    code -r .
    

    Katalog i drzewo plików zostaną wyświetlone w eksploratorze plików.

  2. Otwórz ponownie zintegrowany terminal. Terminal umieszcza Cię w katalogu głównym projektu internetowego.

  3. Otwórz plik azure-pipelines.yml.

    Zobaczysz instrukcje dotyczące kompilacji pakietu, ustawiana wersji i dodawania pakietu do usługi Azure Artifacts.

    To zadanie DotNetCoreCLI@2 powoduje kompilację projektu:

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

    To zadane DotNetCoreCLI@2 tworzy pakiet projektu o wersji 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'
    

    Podczas tworzenia pakietu zwykle używa się schematu wersjonowania byPrereleaseNumber. Spowoduje to dołączenie unikatowego sufiksu wersji wstępnej, takiego jak "-CI-20190621-042647" na końcu numeru wersji. W tym przykładzie pełny numer wersji miałby postać „1.0.0-CI-20190621-042647”.

    To zadanie NuGetCommand@2 wypycha pakiet do źródła danych Tailspin.SpaceGame.Web.Models w usłudze Azure Artifacts:

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

    feedPublish określa nazwę kanału informacyjnego do opublikowania. Format nazwy to <projectName>/<feedName>, gdzie:

    • $(System.TeamProject) jest wstępnie zdefiniowaną zmienną, która odwołuje się do nazwy projektu; na przykład "Space Game - web - Dependencies".
    • Tailspin.SpaceGame.Web.Models to nazwa kanału informacyjnego podana w poprzednim ćwiczeniu.

Ustawianie uprawnień

Zanim będzie można skonfigurować i uruchomić potok, musisz przyznać usłudze kompilacji odpowiednie uprawnienia.

  1. Przejdź do projektu w usłudze Azure DevOps.
  2. Wybierz pozycję Artefakty z menu po lewej stronie.
  3. Wybierz ikonę Ustawienia w prawym górnym rogu ekranu, a następnie wybierz kartę Uprawnienia.
  4. Wybierz przycisk Dodaj użytkowników/grupy.
  5. W polu Użytkownicy/grupy wprowadź space game - web - dependencies Build Service, wybierz rolę Współautor, a następnie wybierz pozycję Zapisz.

Tworzenie potoku w usłudze Azure Pipelines

W poprzednim module przedstawiono sposób konfigurowania usługi Azure Pipelines. Jeśli potrzebujesz odświeżenia, przejdź do sekcji Tworzenie potoku kompilacji za pomocą usługi Azure Pipelines.

Poniżej przedstawiono sposób konfigurowania drugiego potoku w celu skompilowania pakietu i przekazania tego pakietu do usługi Azure Artifacts.

  1. W usłudze Azure DevOps przejdź do projektu Space Game — web — Dependencies .

  2. Z menu po lewej stronie wybierz pozycję Potoki.

  3. Wybierz pozycję Nowy potok.

  4. Na karcie Connect (Połączenie) wybierz pozycję GitHub.

  5. Na karcie Wybierz wybierz pozycję mslearn-tailspin-spacegame-web-models.

    Jeśli zostanie wyświetlony monit, wprowadź poświadczenia usługi GitHub. Na wyświetlonej stronie przewiń w dół, a następnie wybierz pozycję Zatwierdź i zainstaluj.

  6. Na karcie Review (Recenzja) zostanie wyświetlony plik azure-pipelines.yml nowego potoku.

  7. Wybierz Uruchom.

  8. Obserwuj przebieg potoku.

  9. Przejdź do karty Artefakty .

  10. Z listy rozwijanej u góry wybierz pozycję Tailspin.SpaceGame.Web.Models.

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

    W usłudze Azure Artifacts zostanie wyświetlona strona wynikowa Tailspin.SpaceGame.Web.Models.

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

  11. Wybierz pakiet, aby przejść do strony szczegółów. Następnie skopiuj numer wersji do lokalizacji, w której można łatwo uzyskać do niego dostęp później.

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

    W następnej lekcji użyjesz tego numeru wersji.