Buildfeladatok megtervezése

Befejeződött

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:

  1. A node.js-csomagok telepítéséhez futtassa a következőtpackage.jsonnpm install:
  2. Sass-fájlok (.scss)-fájlok CSS-fájlokká (.css) való konvertálásához futtassa a következőt node-sass: .
  3. A JavaScript- és CSS-fájlok minimálisra egyesítéséhez futtassa a következőt gulp: .
  4. 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.
  5. A projekt függőségeinek telepítéséhez futtassa a következőt dotnet restore: .
  6. 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: .
  7. 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 a dotnet 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 a dotnet 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 tevékenységnév "@" értéke például DotNetCoreCLI@2a 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.

Tesztelje tudását

1.

A buildfeladat: