Esercizio - Eseguire il push di una modifica nel pacchetto
A questo punto, sono disponibili due pipeline. Una pubblica il pacchetto Models in Azure Artifacts e l'altra è destinata all'app Web di Space Game. La configurazione della build per l'app Web fa riferimento al pacchetto Models in modo da poter accedere alle classi del modello.
Si proverà ad aggiornare il pacchetto Modelli e usare tale modifica dall'app Web.
A tale scopo, iniziare aggiungendo una proprietà a una delle classi del modello e quindi incrementare la versione del pacchetto. Si invierà quindi la modifica a GitHub, affinché la pipeline possa compilare il pacchetto e pubblicarlo in Azure Artifacts.
Verrà quindi aggiornata l'app Web in modo che faccia riferimento al numero di versione più recente del pacchetto Modelli per usare la proprietà aggiunta.
Creare un ramo
Per prima cosa, creare un ramo che contenga il lavoro. Creare un ramo denominato add-game-style
, che si basa sul ramo main
.
A questo punto, sono state aperte due copie di Visual Studio Code, una per il progetto Tailspin.SpaceGame.Web.Models e una per il progetto dell'app Web Space Game, Tailspin.SpaceGame.Web. In questo caso si userà la copia per il progetto Tailspin.SpaceGame.Web.Models.
Aprire il terminale integrato in Visual Studio Code.
Nel terminale eseguire il comando
git checkout
seguente per creare un ramo denominatoadd-game-style
.git checkout -B add-game-style
Aggiungere una proprietà al pacchetto Models
Aggiungere una proprietà a una delle classi del modello, denominata Score
, che definisca lo stile del gioco, o la difficoltà, a cui è associato il punteggio.
A questo punto si userà la copia di Visual Studio Code per il progetto Tailspin.SpaceGame.Web.Models.
In Visual Studio Code aprire Tailspin.SpaceGame.Web.Models/Models/Score.cs. Aggiungere la proprietà evidenziata seguente sotto l'elenco di proprietà già presenti.
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; } } }
Nota
Si sta apportando una modifica a un file nel progetto per dimostrare il punto in cui si aumenta il numero di versione. Tuttavia, l'app Web non verrà aggiornata per l'uso della nuova proprietà.
Salva il file.
Per verificare le attività eseguite, compilare il progetto:
dotnet build --configuration Release
In pratica, è possibile eseguire altri passaggi di verifica, ad esempio eseguire dei test o testare il nuovo pacchetto con un'app che lo usi.
Compilare e pubblicare il pacchetto
Dopo aver aggiunto la nuova proprietà alla classe Score
e aver verificato la corretta compilazione del progetto, è possibile aggiornare la versione del pacchetto. È quindi possibile eseguire il push della modifica in GitHub in modo che Azure Pipelines possa compilare e pubblicare il pacchetto aggiornato.
Aprire azure-pipelines.yml e modificare
minorVersion
da0
a1
, quindi salvare il file.minorVersion: '1'
In questo caso, la versione passa da 1.0.0 a 1.1.0 per rendere chiara la presenza della modifica. In pratica, si seguirà lo schema di controllo delle versioni per la tipologia di pacchetto in uso.
Ad esempio, in base al Versionamento Semantico, l'aumento della versione principale a 1 (1.1.0) indica agli altri utenti che il pacchetto è compatibile con le app che usano la versione 1.0.0 del pacchetto. Gli utenti che usano il pacchetto potrebbero quindi modificare l'app per usare le nuove funzionalità.
I progetti open source più diffusi rendono disponibile la documentazione sotto forma di log delle modifiche che spiega le modifiche apportate in ogni versione e come eseguire la migrazione da una versione principale a quella successiva.
Preparare le modifiche per il commit, eseguirne il commit e il push:
git add . git commit -m "Add GameStyle property" git push origin add-game-style
In Microsoft Azure Pipelines passare al progetto Tailspin.SpaceGame.Web.Models e osservare l'esecuzione della build.
Aprire la scheda Artefatti e prendere nota della nuova versione. La versione precedente è ancora disponibile per tutti i progetti che vi fanno ancora riferimento.
Come è stato fatto in precedenza, prendere nota della nuova versione per l'unità successiva.
Fare riferimento alla nuova versione del pacchetto Models
Ora modificare il progetto Tailspin.SpaceGame.Web affinché usi la nuova versione del pacchetto Tailspin.SpaceGame.Web.Models.
A questo punto, si userà la copia di Visual Studio Code per il progetto dell'app Web Space Game, Tailspin.SpaceGame.Web.
In Visual Studio Code aprire Tailspin.SpaceGame.Web.csproj e modificare
PackageReference
inserendo il numero di versione del pacchetto Tailspin.SpaceGame.Web.Models creato in Azure Artifacts. Salvare quindi il file.Ecco un esempio:
<PackageReference Include="Tailspin.SpaceGame.Web.Models" Version="1.1.0-CI-20210528-202436" />
Se Visual Studio Code richiede di ripristinare i pacchetti, è possibile ignorare il messaggio. Per brevità, l'app Web non verrà compilata in locale.
Nel terminale preparare le modifiche per il commit, eseguirne il commit e il push.
git add . git commit -m "Bump Models package to 1.1.0" git push origin models-package
In Azure Pipelines, passare al progetto mslearn-tailspin-spacegame-web e osservare l'esecuzione della compilazione.
L'output di compilazione mostra che si ottiene la dipendenza più recente, si compila l'app e si pubblica l'artefatto per l'app Web.