Latihan - Mendorong perubahan ke paket Anda

Selesai

Pada titik ini, Anda memiliki dua alur. Salah satunya menerbitkan paket Model ke Azure Artifacts, dan satu untuk aplikasi web Space Game. Konfigurasi build untuk aplikasi web merujuk pada paket Models sehingga dapat mengakses kelas model.

Di sini, Anda akan berlatih memperbarui paket Model dan mengonsumsi perubahan tersebut dari aplikasi web.

Untuk melakukannya, Anda akan mulai dengan menambahkan properti ke salah satu kelas model lalu menabrak versi paket. Kemudian, Anda akan mengirimkan perubahan ke GitHub sehingga alur dapat membangun paket dan menerbitkannya ke Azure Artifacts.

Anda kemudian akan memperbarui aplikasi web untuk mereferensikan nomor versi paket Model yang lebih baru sehingga dapat menggunakan properti yang ditambahkan.

Membuat cabang

Mari kita mulai dengan membuat cabang untuk menampung pekerjaan kita. Buat cabang bernama add-game-style, yang didasarkan dari cabang main.

Pada titik ini, Anda memiliki dua salinan Visual Studio Code terbuka, satu untuk proyek Tailspin.SpaceGame.Web.Models dan satu untuk proyek aplikasi web Space Game, Tailspin.SpaceGame.Web. Di sini, Anda akan bekerja dari salinan untuk proyek Tailspin.SpaceGame.Web.Models.

  1. Buka terminal terintegrasi di Visual Studio Code.

  2. Dari terminal, untuk membuat cabang bernama add-game-style, jalankan perintah berikut git checkout.

    git checkout -B add-game-style
    

Menambahkan properti ke paket Model

Tambahkan properti bernama Scoreke salah satu kelas model, yang menyediakan gaya permainan (atau kesulitan) dengan skor yang terkait.

Di sini, Anda akan bekerja dari salinan Visual Studio Code untuk proyek Tailspin.SpaceGame.Web.Models.

  1. Dari Visual Studio Code, buka Tailspin.SpaceGame.Web.Models/Models/Score.cs. Tambahkan properti yang disorot berikut ini ke daftar properti yang sudah ada.

    using System.Text.Json.Serialization;
    
    namespace TailSpin.SpaceGame.Web.Models
    {
        public class Score : Model
        {
            // The ID of the player profile associated with this score.
            [JsonPropertyName("profileId")]
            public string ProfileId { get; set; }
    
            // The score value.
            [JsonPropertyName("score")]
            public int HighScore { get; set; }
    
            // The game mode the score is associated with.
            [JsonPropertyName("gameMode")]
            public string GameMode { get; set; }
    
            // The game region (map) the score is associated with.
            [JsonPropertyName("gameRegion")]
            public string GameRegion { get; set; }
    
            // The game style (difficulty) the score is associated with.
            [JsonPropertyName("gameStyle")]
            public string GameStyle { get; set; }
        }
    }
    

    Catatan

    Anda membuat perubahan pada file dalam proyek untuk menunjukkan di mana Anda menemukan nomor versi. Namun, kami tidak akan memperbarui aplikasi web untuk menggunakan properti baru.

  2. Simpan file.

  3. Untuk memverifikasi pekerjaan Anda, buat proyek:

    dotnet build --configuration Release
    

    Dalam praktiknya, Anda dapat melakukan langkah-langkah verifikasi tambahan, seperti menjalankan pengujian atau menguji paket baru dengan aplikasi yang menggunakannya.

Membangun dan menerbitkan paket

Sekarang setelah Anda menambahkan properti baru ke Score kelas dan memverifikasi build proyek dengan sukses, Anda dapat memperbarui versi paket. Anda kemudian dapat mendorong perubahan Anda ke GitHub sehingga Azure Pipelines dapat membangun dan menerbitkan paket yang diperbarui.

  1. Buka azure-pipelines.yml, ubah minorVersion dari 0 ke 1, dan simpan file.

    minorVersion: '1'
    

    Di sini, kami menabrak versi dari 1.0.0 ke 1.1.0 untuk memperjelas perubahan. Dalam praktiknya, Anda akan mengikuti skema penerapan versi untuk jenis paket yang sedang Anda kerjakan.

    Misalnya, menurut Penerapan Versi Semantik, menabrak versi minor ke 1 (1.1.0) memberi tahu orang lain bahwa paket kompatibel dengan aplikasi yang menggunakan versi 1.0.0 dari paket tersebut. Mereka yang menggunakan paket kemudian dapat memodifikasi aplikasi mereka untuk menggunakan fitur baru.

    Proyek sumber terbuka populer menyediakan dokumentasi dalam bentuk changelog yang menjelaskan perubahan yang dilakukan di setiap versi dan cara bermigrasi dari satu versi utama ke versi berikutnya.

  2. Tahap, terapkan, dan dorong perubahan Anda:

    git add .
    git commit -m "Add GameStyle property"
    git push origin add-game-style
    
  3. Dari Microsoft Azure Pipelines, buka proyek Tailspin.SpaceGame.Web.Models, dan lihat proses pembuatannya.

  4. Buka tab Artefak dan perhatikan versi baru. Jangan khawatir; versi lama Anda masih ada untuk proyek apa pun yang masih mereferensikannya.

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

  5. Seperti yang Anda lakukan sebelumnya, tuliskan versi baru untuk unit berikutnya.

Mereferensikan versi baru paket Model

Sekarang, ubah proyek Tailspin.SpaceGame.Web untuk menggunakan versi baru paket Tailspin.SpaceGame.Web.Models.

Di sini, Anda akan bekerja dari salinan Visual Studio Code untuk proyek aplikasi web Space Game, Tailspin.SpaceGame.Web.

  1. Dari Visual Studio Code, buka Tailspin.SpaceGame.Web.csproj, dan ubah PackageReference ke nomor versi paket Tailspin.SpaceGame.Web.Models yang Anda buat di Azure Artifacts. Lalu simpan file.

    Berikut contohnya:

    <PackageReference Include="Tailspin.SpaceGame.Web.Models" Version="1.1.0-CI-20210528-202436" />
    

    Jika Visual Studio Code meminta Anda untuk memulihkan paket, Anda dapat mengabaikan pesan itu dengan aman. Untuk mempermudah, kami tidak akan membangun aplikasi web secara lokal.

  2. Dari terminal, tahap, terapkan, dan dorong perubahan.

    git add .
    git commit -m "Bump Models package to 1.1.0"
    git push origin models-package
    
  3. Dari Azure Pipelines, buka proyek mslearn-tailspin-spacegame-web, dan tonton eksekusi build.

    Anda melihat dari output build bahwa ia mendapatkan dependensi terbaru, membangun aplikasi, dan menerbitkan artefak untuk aplikasi web.