Buildfeladatok megtervezése
Mara most már rendelkezik a Space Game kód egy példányával. A meglévő Ubuntu 22.04 buildkiszolgáló helyett a Microsoft Azure Pipelines használatával fogja felépíteni. Mielőtt ezt megtehetné, gondolnia kell a meglévő buildelési szkriptekre. Kövesse figyelemmel, ahogy Mara leképezi a meglévő szkripteket Azure Pipelines-feladatokra. Gondolja át, hogyan tehetné meg ugyanezt a saját buildfolyamatával.
Íme néhány jegyzet, amelyet Mara gyűjtött össze, amikor Andyvel, a fejlesztői vezetővel beszélt:
- A buildelési gép az Ubuntu 22.04-et futtatja.
- A buildelési gép a következő buildelési eszközöket tartalmazza:
- npm, a Node.js csomagkezelője
- NuGet, a .NET csomagkezelője
- .NET SDK
- A projekt a Syntactly Awesome Style Sheets (Sass) használatával teszi egyszerűbbé a kaszkádolt stíluslapok (CSS- ) fájlok készítését.
- A projekt a Gulp eszközkészletet használja a JavaScript- és CSS-fájlok minifikálásához.
A minified asset kizárja a szükségtelen adatokat (például a whitespace-t), és lerövidíti a változóneveket a gyorsabb letöltés érdekében.
A buildelési folyamat során a következő lépések történnek:
- A node.js-csomagok telepítéséhez futtassa a következőt
package.json
npm install
: - Sass-fájlok (.scss)-fájlok CSS-fájlokká (.css) való konvertálásához futtassa a következőt
node-sass
: . - A JavaScript- és CSS-fájlok minimálisra egyesítéséhez futtassa a következőt
gulp
: . - Ha segíteni szeretné a minőségbiztosítási csapatnak a buildszám és a dátum azonosítását, nyomtassa ki a buildadatokat a
wwwroot
címtárba. - A projekt függőségeinek telepítéséhez futtassa a következőt
dotnet restore
: . - Az alkalmazás hibakeresési és kiadási konfigurációk alatt történő létrehozásához futtassa a következőt
dotnet build
: . - Ha az alkalmazást .zip fájlként szeretné csomagolni, és az eredményeket egy hálózati megosztásba szeretné másolni a minőségbiztosítási csapat számára, futtassa
dotnet publish
.
Mara létrehoz egy felületszkriptet, ami elvégzi az azonosított feladatokat. A saját laptopján futtatja.
Megjegyzés:
Ezt a szkriptet Önnek nem kell futtatnia, és nem kell teljesen tisztában lennie a rendeltetésével. Azért van itt, hogy szemléltesse a tipikus buildszkriptek működését.
#!/bin/bash
# Install Node.js modules as defined in package.json.
npm install --quiet
# Compile Sass (.scss) files to standard CSS (.css).
node-sass Tailspin.SpaceGame.Web/wwwroot
# Minify JavaScript and CSS files.
gulp
# Print the date to wwwroot/buildinfo.txt.
echo `date` > Tailspin.SpaceGame.Web/wwwroot/buildinfo.txt
# Install the latest .NET packages the app depends on.
dotnet restore
# Build the app under the Debug configuration.
dotnet build --configuration Debug
# Publish the build to the /tmp directory.
dotnet publish --no-build --configuration Debug --output /tmp/Debug
# Build the app under the Release configuration.
dotnet build --configuration Release
# Publish the build to the /tmp directory.
dotnet publish --no-build --configuration Release --output /tmp/Release
A /tmp
könyvtár a csapat hálózati megosztását utánozza.
A futtatás után Mara rájön, hogy a szkript nem teljes, például nem képes kezelni a hibákat. Nem értesíti senkit, ha buildelési hibák lépnek fel. Még akkor is fut, ha vannak hibák. Ráadásul az egyes lépésekhez szükséges eszközöket sem telepíti.
Mik azok az Azure Pipelines-feladatok?
Az Azure Pipelinesban a feladat egy olyan csomagolt szkript vagy eljárás, amelyet bemenetek készletével absztrakciózunk.
Az Azure Pipelines-tevékenységek elvonják a mögöttes részleteket. Ez az absztrakció megkönnyíti a gyakori buildelési függvények futtatását, például olyan buildelési eszközök vagy csomagok letöltését, amelyektől az alkalmazás függ, vagy a projekt létrehozásához, a Visual Studio vagy az Xcode futtatásához.
A .NET-et célként szolgáló C#-projekt létrehozásához íme egy példa, amely a DotNetCoreCLI@2
feladatot használja:
task: DotNetCoreCLI@2
displayName: 'Build the project'
inputs:
command: 'build'
arguments: '--no-restore --configuration Release'
projects: '**/*.csproj'
Előfordulhat, hogy a folyamat lefordítja a feladatot a következő parancsra:
dotnet build MyProject.csproj --no-restore --configuration Release
Bontsuk le ezt a feladatot még egy kicsit:
- A
DotNetCoreCLI@2
feladat adotnet
parancsra van leképezve. - A
displayName
határozza meg a feladat felhasználói felületen megjelenő nevét. Ezt hamarosan működés közben is látni fogja. - Az
inputs
olyan argumentumokat határoz meg, amelyeket a rendszer átad a parancsnak.- A
command
meghatározza adotnet build
alparancs futtatását. - Az
arguments
további, a parancsnak átadandó argumentumokat határoz meg. - A
projects
a létrehozandó projekteket adja meg. Ez a példa a**/*.csproj
helyettesítőkarakter-mintát használja. A**
és a*.csproj
példa az úgynevezett globális (fájlnév-helyettesítési) mintákra. A**
rész határozza meg az aktuális könyvtár és a gyermekkönyvtárak megkeresését. A*.csproj
rész minden .csproj fájlt megad. A helyettesítő karakterek lehetővé teszik, hogy több fájlon is működjön anélkül, hogy mindegyik meg van adva. Ha csak egy bizonyos fájlra van szüksége, a helyettesítő karakterek használata helyett megadhatja a fájlt.
- A
A tevékenységnév "@" értéke például DotNetCoreCLI@2
a tevékenység verziójára hivatkozik. Ahogy elérhetővé válnak az új feladatverziók, fokozatosan frissítsen a legújabb verzióra, hogy kihasználhassa az új funkciók nyújtotta előnyöket.
Hogy lehet használni a feladatokat egy folyamatban?
Ezután Mara leképezi a meglévő szkriptparancsokat az Azure Pipelines-feladatokra. A folyamat yaML-fájllal jön létre, amely egy kompakt formátum, amely megkönnyíti a konfigurációs fájlokban található adatok szerkezetét. A folyamat YAML-fájljait általában közvetlenül az alkalmazás forráskódjával tartják karban.
A Mara korábban a YAML-et használta hasonló buildelési feladatok és konfigurációk definiálására. Emellett a builddefiníció kódként való fenntartását is szereti, ahogyan a projekt bármely más részét is.
Mara úgy dönt, hogy a build meghatározásához létrehoz egy YAML-fájlt a Visual Studio Code-dal. Ebben beírja az összes Azure Pipelines-feladatot, amelyet a meglévő szkriptparancsok helyére fog használni.
Szkriptparancsok leképezése az Azure Pipelines-feladatokra
Most követni fogja, ahogy Mara parancsokat képez le a szkriptjéből az Azure Pipelines-feladatokba.
Az egyes parancsok leképezéséhez Mara a referenciadokumentációra támaszkodik. A dokumentáció függvények szerint kategorizálja a feladatokat, például a buildelést vagy az üzembe helyezést.
A .NET Core CLI-feladatDotNetCoreCLI@2
például segít a parancsok futtatásábandotnet
.
Ez a táblázat a szkriptparancsokat az új Azure Pipelines-feladatokhoz társítja:
Szkriptparancs | Azure Pipelines-feladat |
---|---|
npm install |
Npm@1 |
node-sass |
CmdLine@2 (vagy script ) |
gulp |
gulp@1 |
echo `date` |
CmdLine@2 (vagy script ) |
dotnet restore |
DotNetCoreCLI@2 |
dotnet build |
DotNetCoreCLI@2 |
dotnet publish |
DotNetCoreCLI@2 |
Nincs olyan beépített feladattípus, amely node-Sass-t futtat, vagy a dátumot fájlba nyomtatja. Ezek esetében Mara használja a CmdLine@2
feladatot, amely lehetővé teszi számára, hogy bármilyen parancsot futtasson, amit akar. Gyakrabban fog találkozni a script
feladattal, ami a CmdLine@2
hivatkozása. A többi gyakori feladatikonról további információt az Azure Pipelines YAML-sémájának útmutatója – lépések című témakörben talál.
Hamarosan létrehoz egy saját YAML-fájlt, amely ezeket a feladatokat használja.