Plánování úloh sestavení

Dokončeno

Mara teď má kopii kódu Space Game . Místo existujícího buildového serveru Ubuntu 22.04 ji sestaví pomocí Microsoft Azure Pipelines. Než to udělá, potřebuje se soustředit na existující skripty sestavení. Sledujte, jak mapuje existující skripty na úlohy Azure Pipelines. Přemýšlejte o tom, jak byste udělali totéž s vlastním procesem sestavení.

Tady je několik poznámek, které Mara shromáždila, když mluvila s Andym, vedoucí vývojáře:

  • Na počítači sestavení běží Ubuntu 22.04.
  • Buildovací počítač obsahuje nástroje sestavení, jako jsou:
    • npm, správce balíčků pro Node.js
    • NuGet, správce balíčků pro .NET
    • .NET SDK
  • Projekt používá syntakticky úžasné šablony stylů (Sass), aby bylo snazší vytvářet soubory šablon stylů CSS ..
  • Projekt používá sadu nástrojů gulp k minifikaci souborů JavaScript a CSS.

Minifikovaný prostředek vylučuje nepotřebná data (například prázdné znaky) a zkracuje názvy proměnných, aby se stahovaly rychleji.

Tady jsou kroky, ke kterým dochází během procesu sestavení:

  1. Chcete-li nainstalovat balíčky Node.js definované v package.json, spusťte npm install.
  2. Pokud chcete převést soubory Sass (.scss) na soubory CSS (.css), spusťte node-sasspříkaz .
  3. Pokud chcete minifikovat soubory JavaScriptu a CSS, spusťte gulppříkaz .
  4. Pokud chcete týmu pro kontrolu kvality pomoct identifikovat číslo a datum sestavení, vytiskněte informace o sestavení do wwwroot adresáře.
  5. Pokud chcete nainstalovat závislosti projektu, spusťte dotnet restorepříkaz .
  6. Pokud chcete sestavit aplikaci v konfiguraci ladění i verze, spusťte dotnet buildpříkaz .
  7. Pokud chcete zabalit aplikaci jako soubor .zip a zkopírovat výsledky do sdílené síťové složky, aby tým pro kontrolu kvality vyzvedá, spusťte dotnet publish.

Mara vytvoří skript prostředí, který provede určené úlohy. Spustí ho na svém přenosném počítači.

Poznámka:

Tento skript nemusíte spouštět ani mu zcela rozumět. Tady je pro ilustraci toho, co provádí typický skript sestavení.

#!/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

Adresář /tmp imituje sdílenou síťovou složku týmu.

Po spuštění skriptu si Mara uvědomí, že není úplný. Například neřeší možné chyby. Pokud dojde k chybám sestavení, nikdo ho neoznámí. I když dojde k chybám, pořád běží. Skript také nenainstaluje nástroje potřebné v každém kroku.

Co jsou úlohy Azure Pipelines?

V Azure Pipelines je úloha zabalený skript nebo procedura, která je abstrahována sadou vstupů.

Úloha Azure Pipelines abstrahuje podkladové podrobnosti. Tato abstrakce usnadňuje spouštění běžných funkcí sestavení, jako je stahování nástrojů sestavení nebo balíčků, na kterých závisí vaše aplikace, nebo sestavení projektu, spuštění sady Visual Studio nebo Xcode.

Pokud chcete vytvořit projekt jazyka C#, který cílí na .NET, tady je příklad, který tento úkol používá DotNetCoreCLI@2 :

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

Kanál může tuto úlohu přeložit na následující příkaz:

dotnet build MyProject.csproj --no-restore --configuration Release

Pojďme si tento úkol trochu rozdělit:

  • Úloha DotNetCoreCLI@2 se namapuje na příkaz dotnet.
  • displayName definuje název úlohy, který se zobrazí v uživatelském rozhraní. Toto se brzy zobrazí v akci.
  • inputs definuje argumenty předávané příkazu.
    • command určuje spuštění podpříkazu dotnet build.
    • arguments určuje další argumenty k předání do příkazu.
    • projects určuje, které projekty se sestaví. Tento příklad používá vzor zástupných znaků **/*.csproj. ** i *.csproj představují příklady nazývané vzory glob. Část ** určuje prohledání aktuálního adresáře a všech podadresářů. Část *.csproj určuje libovolný soubor .csproj . Zástupné řady umožňují pracovat s více soubory, aniž byste museli zadávat jednotlivé soubory. Pokud potřebujete pracovat s jedním konkrétním souborem, můžete tento soubor zadat namísto použití zástupných znaků.

Znak @v názvu DotNetCoreCLI@2úkolu například odkazuje na verzi úkolu. Jakmile jsou k dispozici nové verze úloh, můžete postupně migrovat na nejnovější verzi, abyste mohli využívat nové funkce.

Jak se úlohy v kanálu používají?

V dalším kroku Mara namapuje existující příkazy skriptu na úlohy Azure Pipelines. Kanál se vytvoří pomocí souboru YAML, což je kompaktní formát, který usnadňuje strukturování druhu dat v konfiguračních souborech. Soubory YAML kanálu se obvykle spravují přímo se zdrojovým kódem vaší aplikace.

Mara dříve použila YAML k definování podobných úloh a konfigurací sestavení. Líbí se jí také myšlenka údržby definice sestavení jako kódu, stejně jako jakákoli jiná část svého projektu.

K definici svého sestavení si Mara zvolila Visual Studio Code a soubor YAML. V něm zadá všechny úlohy Azure Pipelines, které použije k nahrazení existujících příkazů skriptu.

Mapování příkazů skriptu na úlohy Azure Pipelines

Teď budete sledovat, jak Mara mapuje příkazy ze svého skriptu na úlohy Azure Pipelines.

K namapování každého příkazu používá Mara referenční dokumentaci. Dokumentace kategorizuje úlohy podle funkce, jako je sestavení nebo nasazení.

Například úlohaDotNetCoreCLI@2 rozhraní příkazového řádku .NET Core vám pomůže spouštět dotnet příkazy.

Tato tabulka přidruží příkazy skriptu k novým úlohám Azure Pipelines:

Příkaz skriptu Úloha v Azure Pipelines
npm install Npm@1
node-sass CmdLine@2 (nebo script).
gulp gulp@1
echo `date` CmdLine@2 (nebo script).
dotnet restore DotNetCoreCLI@2
dotnet build DotNetCoreCLI@2
dotnet publish DotNetCoreCLI@2

Neexistuje žádný předdefinovaný typ úlohy, který spouští sasy uzlu nebo vytiskne datum do souboru. Pro ty mara používá CmdLine@2 úkol, který jí umožní spustit libovolný příkaz, který chce. Častěji se setkáte s úlohou script, což je zkratka pro CmdLine@2. Další informace o dalších běžných zkratkách úloh najdete v referenčních informacích ke schématu YAML pro Azure Pipelines – kroky.

Brzy vytvoříte vlastní soubor YAML, který tyto úlohy používá.

Prověřte si své znalosti

1.

Co je úloha sestavení: