Cvičení – vytvoření agenta sestavení, který běží v Azure
V této lekci nakonfigurujete agenta sestavení, kterého můžete použít v Microsoft Azure Pipelines, použijete virtuální počítač, který běží v Microsoft Azure. Poskytujeme virtuální počítač, který můžete použít po dobu trvání tohoto modulu.
V této lekci se naučíte:
- V Azure vytvoříte virtuální počítač se systémem Ubuntu, který bude sloužit jako váš agent sestavení.
- Vytvořte fond agentů v Microsoft Azure DevOps.
- Vytvoříte přístupový token pro ověření vašeho agenta s Azure DevOps.
- Nakonfigurujte svého agenta pomocí softwaru, který je nutný k sestavení webu Space Game .
- Nakonfigurujete vašeho agenta pro připojení k Azure DevOps, aby mohl přijímat úlohy sestavení.
- Ověřte, že je agent připojený k Azure DevOps a připravený přijímat úlohy sestavení.
V Azure můžete virtuální počítač vytvořit mnoha způsoby. V této lekci vytvoříte virtuální počítač s Ubuntu pomocí interaktivního terminálu s názvem Cloud Shell.
Pokud chcete nakonfigurovat virtuální počítač, máte několik možností:
- U virtuálního počítače s Linuxem se můžete připojit přímo přes SSH a systém nakonfigurovat interaktivně.
- Nasazení můžete automatizovat pomocí šablony ARM, Bicep nebo jiného automatizovaného nástroje pro zřizování.
- Pokud potřebujete nasadit mnoho agentů sestavení, můžete vytvořit image virtuálního počítače s předinstalovaným veškerým softwarem.
Interaktivní konfigurace systému představuje dobrý způsob, jak začít, protože vám pomůže porozumět procesu a všemu potřebnému. Pokud chcete tento proces zjednodušit, připojte se k virtuálnímu počítači s Ubuntu přes SSH a spusťte skripty prostředí pro nastavení agenta sestavení.
Poznámka:
Pokud neznáte připojení k linuxovým systémům nebo konfiguraci, postupujte podle pokynů. Stejné principy platí pro agenty sestavení ve Windows.
Vytvoření virtuálního počítače s Linuxem
V této části vytvoříte virtuální počítač s Ubuntu 20.04, který bude sloužit jako agent sestavení. Virtuální počítač ještě není nastavený jako agent sestavení nebo nemá žádné nástroje potřebné k sestavení webové aplikace Space Game . To uděláte za chvíli.
Vyvolání Cloud Shellu prostřednictvím webu Azure Portal
Důležité
K dokončení cvičení v tomto modulu potřebujete vlastní předplatné Azure.
Přejděte na web Azure Portal a přihlaste se.
V nabídce vyberte Cloud Shell. Po zobrazení výzvy vyberte prostředí Bash .
Poznámka:
Cloud Shell vyžaduje, aby prostředek úložiště Azure uchovával všechny soubory, které vytvoříte v Cloud Shellu. Při prvním otevření Cloud Shellu se zobrazí výzva k vytvoření skupiny prostředků, účtu úložiště a sdílené složky Azure Files. Toto nastavení se automaticky použije pro všechny budoucí relace Cloud Shellu.
Výběr oblasti Azure
Oblast je jedno nebo více datacenter Azure v rámci geografického umístění. Příklady oblastí jsou Východní USA, Západní USA a Severní Evropa. Každému prostředku Azure, včetně virtuálního počítače Azure, se přiřadí oblast.
Pokud chcete usnadnit spouštění příkazů, začněte výběrem výchozí oblasti. Jakmile zadáte výchozí oblast, pozdější příkazy tuto oblast použijí, pokud nezadáte jinou oblast.
Spuštěním následujícího
az account list-locations
příkazu v Cloud Shellu zobrazte seznam oblastí dostupných z vašeho předplatného Azure:az account list-locations \ --query "[].{Name: name, DisplayName: displayName}" \ --output table
Name
Ve sloupci ve výstupu vyberte oblast, která je blízko vás. Můžete například zvoliteastasia
nebowestus2
.Spuštěním
az configure
nastavíte výchozí oblast. Nahraďte<REGION>
názvem oblasti, kterou jste vybrali:az configure --defaults location=<REGION>
Tento příklad nastaví
westus2
jako výchozí oblast:az configure --defaults location=westus2
Vytvoření skupiny zdrojů
Vytvořte skupinu prostředků, která bude obsahovat prostředky použité v tomto školicím modulu.
Pokud chcete vytvořit skupinu prostředků s názvem tailspin-space-game-rg, spusťte následující
az group create
příkaz:az group create --name tailspin-space-game-rg
Vytvoření virtuálního počítače
Pokud chcete vytvořit virtuální počítač, spusťte následující az vm create
příkaz:
az vm create \
--name MyLinuxAgent \
--resource-group tailspin-space-game-rg \
--image canonical:0001-com-ubuntu-server-focal:20_04-lts:latest \
--size Standard_DS2_v2 \
--admin-username azureuser \
--generate-ssh-keys
Spuštění virtuálního počítače bude trvat několik minut.
Argument Standard_DS2_v2 určuje velikost virtuálního počítače. Velikost virtuálního počítače definuje rychlost jeho procesoru, velikost paměti, počáteční velikost úložiště a očekávanou šířku pásma sítě. Jedná se o stejnou velikost, kterou poskytují agenti hostovaní Microsoftem. V praxi můžete zvolit velikost, která poskytuje větší výpočetní výkon nebo další možnosti, jako je zpracování grafiky.
Argument --resource-group
určuje skupinu prostředků, která obsahuje všechny věci, které potřebujeme vytvořit. Skupina prostředků vám umožní spravovat najednou všechny virtuální počítače, disky, síťová rozhraní a další prvky, ze kterých se naše řešení skládá.
Vytvoření fondu agentů
Připomínáme, že fond agentů slouží k uspořádání agentů sestavení. V této části vytvoříte fond agentů v Azure DevOps. Až budete později svého agenta konfigurovat, zadáte název fondu agentů, aby se agent registroval do správného fondu.
V Azure DevOps přejděte do projektu Space Game – web – Agent .
Vyberte nastavení projektu.
V části Pipelines (Kanály) vyberte Agent pools (Fondy agentů).
Vyberte Přidat fond.
V okně Přidat fond :
- V části Fond, který chcete propojit, vyberte Nový.
- V části Typ fondu vyberte Možnost Vlastní hostování.
- V části Název zadejte MyAgentPool.
V praxi byste zvolili popisnější název fondu.
Vyberte Vytvořit. Nový fond agentů se zobrazí v seznamu.
Vytvoření osobního přístupového tokenu (PAT)
Aby se váš agent sestavení zaregistroval v Azure DevOps, potřebujete způsob, jak se ověřit.
Uděláte to tak, že vytvoříte osobní přístupový token. Osobní přístupový token (neboli PAT) je alternativou k heslu. Pat můžete použít k ověřování pomocí služeb, jako je Azure DevOps.
Důležité
Stejně jako u hesla nezapomeňte zachovat přístupový token na bezpečném místě. V této části uložíte přístupový token jako proměnnou prostředí, aby se ve skriptu prostředí nezojevil.
V Azure DevOps otevřete nastavení profilu a pak vyberte Tokeny pat.
Vyberte Nový token.
Zadejte pro váš token název, například Build agent (Agent sestavení).
V části Obory vyberte odkaz Zobrazit všechny obory v dolní části.
Vyhledejte fondy agentů a pak vyberte Číst a spravovat.
Vyberte Vytvořit.
Zkopírujte token na bezpečné místo.
Za chvíli váš token použijete, abyste agentu sestavení umožnili ověření přístupu k Azure Pipelines.
Připojení k virtuálnímu počítači
V této části se připojíte k virtuálnímu počítači s Linuxem přes SSH, abyste ho mohli nakonfigurovat.
Vzpomeňte si, že se nemůžete interaktivně přihlásit k agentovi hostovaným Microsoftem. Vzhledem k tomu, že privátní agent sestavení je váš vlastní, můžete se přihlásit a nakonfigurovat ho, ale chcete ho.
Možnost připojení k agentu sestavení vám umožní nakonfigurovat ho pomocí nástrojů, které potřebujete k sestavení softwaru. Umožňuje také řešit problémy při sestavování konfigurace kanálu.
Pokud chcete získat IP adresu virtuálního počítače, spusťte
az vm show
ji v Cloud Shellu:IPADDRESS=$(az vm show \ --name MyLinuxAgent \ --resource-group tailspin-space-game-rg \ --show-details \ --query [publicIps] \ --output tsv)
Tímto příkazem uložíte IP adresu do proměnné prostředí Bash s názvem
IPADDRESS
.Vytiskněte IP adresu virtuálního počítače do konzoly:
echo $IPADDRESS
Vytvořte připojení SSH k virtuálnímu počítači. Místo $IPADDRESS zadejte IP adresu, kterou jste obdrželi v předchozím kroku. Na příkazovém řádku zadejte ano a pokračujte v připojování.
ssh azureuser@$IPADDRESS
Teď jste připojení k virtuálnímu počítači přes SSH.
Tento příkaz funguje, protože když jste dříve spustili příkaz
az vm create
, zadali jste možnost--generate-ssh-keys
. Tato možnost vytvoří pár klíčů SSH, který vám umožní přihlásit se k virtuálnímu počítači.
Instalace nástrojů sestavení na virtuální počítač
V této části nakonfigurujete virtuální počítač pomocí nástrojů potřebných k sestavení webu Space Game .
Vzpomeňte si, že váš stávající proces sestavení používá tyto nástroje:
- Sada .NET SDK, která se používá k sestavení aplikace
- Node.js, který se používá k provádění úloh sestavení
- npm, správce balíčků pro Node.js
- gulp, balíček Node.js, který se používá k minifikaci souborů JavaScript a CSS
Jedná se o primární nástroje, které proces sestavení vyžaduje. Pokud je chcete nainstalovat, stáhnete a spustíte skript prostředí z GitHubu.
Poznámka:
Proces sestavení používá k převodu souborů Sass (.scss) na soubory CSS (.css) jiné nástroje, například sass. Node.js však tyto nástroje nainstaluje při spuštění sestavení.
Začněme aktualizací správce balíčků Ubuntu s názvem apt. Tato akce načte nejnovější informace z úložišť balíčků a je obvykle první věcí, kterou uděláte při nastavování nového systému Ubuntu.
V připojení SSH aktualizujte mezipaměť správce balíčků apt:
sudo apt-get update
sudo
spustí příkaz s oprávněními správce nebo kořenového adresáře.Pokud chcete stáhnout skript prostředí s názvem build-tools.sh z GitHubu, spusťte následující
curl
příkaz:curl https://raw.githubusercontent.com/MicrosoftDocs/mslearn-tailspin-spacegame-web/main/.agent-tools/build-tools.sh > build-tools.sh
Vytiskněte skript do terminálu, abyste mohli prozkoumat jeho obsah:
cat build-tools.sh
Zobrazí se následující výsledek:
#!/bin/bash set -e # Select a default .NET version if one is not specified if [ -z "$DOTNET_VERSION" ]; then DOTNET_VERSION=6.0.300 fi # Add the Node.js PPA so that we can install the latest version curl -sL https://deb.nodesource.com/setup_16.x | bash - # Install Node.js and jq apt-get install -y nodejs apt-get install -y jq # Install gulp npm install -g gulp # Change ownership of the .npm directory to the sudo (non-root) user chown -R $SUDO_USER ~/.npm # Install .NET as the sudo (non-root) user sudo -i -u $SUDO_USER bash << EOF curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin -c LTS -v $DOTNET_VERSION EOF
Skript nainstaluje Node.js, npm, gulp a .NET Core.
DOTNET_VERSION
Nastavením proměnné prostředí můžete zadat verzi .NET, kterou chcete nainstalovat. Pokud tuto proměnnou nenastavíte, skript nainstaluje verzi, kterou používá vaše stávající konfigurace sestavení. Pro účely výuky tuto proměnnou nenastavíte. Skript povolíte použití výchozí verze.Vytvořte spustitelný skript a spusťte skript:
chmod u+x build-tools.sh sudo ./build-tools.sh
Spuštění tohoto skriptu trvá několik minut.
V praxi byste teď mohli spouštět příkazy, které ověří, že každá softwarová komponenta byla úspěšně nainstalována.
Instalace softwaru agenta na virtuální počítač
Teď je čas nainstalovat na virtuální počítač software agenta. Tento software umožňuje virtuálnímu počítači fungovat jako agent sestavení a přijímat úlohy sestavení ze služby Azure Pipelines.
Proces registrace zkontroluje nainstalovaný software, než zaregistruje agenta ve službě Azure Pipelines. Proto je důležité nastavit agenta po instalaci veškerého dalšího softwaru. V praxi můžete agenta zaregistrovat podruhé, pokud potřebujete nainstalovat další software.
Dokumentace vysvětluje, jak ručně nastavit agenty Linuxu v místním prostředí i agenty pro macOS a Windows. Spuštěním skriptu prostředí nakonfigurujete agenta podobným způsobem, jakým jste nastavili nástroje sestavení v předchozí části.
Důležité
Skript, který tady spustíte, je určený pro účely výuky. V praxi byste měli nejprve pochopit, jak každý příkaz ve skriptech, které sestavíte, ovlivňuje celkový systém. Na konci modulu ukážeme na dokumentaci, která podrobněji popisuje vaše možnosti.
Pokud chcete stáhnout skript prostředí s názvem build-agent.sh z GitHubu, spusťte následující
curl
příkaz:curl https://raw.githubusercontent.com/MicrosoftDocs/mslearn-tailspin-spacegame-web/main/.agent-tools/build-agent.sh > build-agent.sh
Vytiskněte skript do terminálu, abyste mohli prozkoumat jeho obsah:
cat build-agent.sh
Zobrazí se následující výsledek:
#!/bin/bash set -e # Select a default agent version if one is not specified if [ -z "$AZP_AGENT_VERSION" ]; then AZP_AGENT_VERSION=2.187.2 fi # Verify Azure Pipelines token is set if [ -z "$AZP_TOKEN" ]; then echo 1>&2 "error: missing AZP_TOKEN environment variable" exit 1 fi # Verify Azure DevOps URL is set if [ -z "$AZP_URL" ]; then echo 1>&2 "error: missing AZP_URL environment variable" exit 1 fi # If a working directory was specified, create that directory if [ -n "$AZP_WORK" ]; then mkdir -p "$AZP_WORK" fi # Create the Downloads directory under the user's home directory if [ -n "$HOME/Downloads" ]; then mkdir -p "$HOME/Downloads" fi # Download the agent package curl https://vstsagentpackage.azureedge.net/agent/$AZP_AGENT_VERSION/vsts-agent-linux-x64-$AZP_AGENT_VERSION.tar.gz > $HOME/Downloads/vsts-agent-linux-x64-$AZP_AGENT_VERSION.tar.gz # Create the working directory for the agent service to run jobs under if [ -n "$AZP_WORK" ]; then mkdir -p "$AZP_WORK" fi # Create a working directory to extract the agent package to mkdir -p $HOME/azp/agent # Move to the working directory cd $HOME/azp/agent # Extract the agent package to the working directory tar zxvf $HOME/Downloads/vsts-agent-linux-x64-$AZP_AGENT_VERSION.tar.gz # Install the agent software ./bin/installdependencies.sh # Configure the agent as the sudo (non-root) user chown $SUDO_USER $HOME/azp/agent sudo -u $SUDO_USER ./config.sh --unattended \ --agent "${AZP_AGENT_NAME:-$(hostname)}" \ --url "$AZP_URL" \ --auth PAT \ --token "$AZP_TOKEN" \ --pool "${AZP_POOL:-Default}" \ --work "${AZP_WORK:-_work}" \ --replace \ --acceptTeeEula # Install and start the agent service ./svc.sh install ./svc.sh start
Nemusíte rozumět tomu, jak jednotlivé řádky fungují, ale tady je stručný přehled toho, co tento skript dělá:
- Stáhne balíček agenta jako soubor .tar.gz a extrahuje jeho obsah.
- V extrahovaných souborech skript:
- Spustí skript prostředí s názvem installdependencies.sh pro instalaci softwaru agenta.
- Spustí skript prostředí s názvem config.sh , který nakonfiguruje agenta a zaregistruje agenta ve službě Azure Pipelines.
- Spustí skript prostředí s názvem svc.sh pro instalaci a spuštění služby agenta.
Skript používá proměnné prostředí, které vám umožní zadat podrobnosti o vaší organizaci Azure DevOps. Tady je souhrn:
Proměnná Bash Popis Výchozí AZP_AGENT_VERSION
Verze softwaru agenta, který se má nainstalovat Verze, která jsme naposledy použili k otestování tohoto modulu AZP_URL
Adresa URL vaší organizace Azure DevOps (Žádné) AZP_TOKEN
Váš osobní přístupový token (Žádné) AZP_AGENT_NAME
Název vašeho agenta, jak se zobrazí v Azure DevOps Název hostitele systému AZP_POOL
Název fondu agentů Výchozí AZP_WORK
Pracovní adresář agenta k provádění úloh sestavení _Práce Pokud skript nezadá výchozí hodnotu proměnné, která není nastavená, skript vytiskne chybovou zprávu a okamžitě ukončí.
V následujících krocích nastavte tyto proměnné prostředí:
AZP_AGENT_VERSION
AZP_URL
AZP_TOKEN
AZP_AGENT_NAME
AZP_POOL
Prozatím doporučujeme ponechat ostatní proměnné bez nastavení.
Nastavte proměnnou
AZP_AGENT_NAME
prostředí tak, aby určila název vašeho agenta. MyLinuxAgent doporučujeme.export AZP_AGENT_NAME=MyLinuxAgent
Nastavte proměnnou
AZP_URL
prostředí tak, aby určila adresu URL vaší organizace Azure DevOps.Nahraďte <organizaci> vašimi. Název můžete získat na kartě prohlížeče, která zobrazuje Azure DevOps.
export AZP_URL=https://dev.azure.com/organization
Nastavte proměnnou
AZP_TOKEN
prostředí tak, aby určila váš osobní přístupový token (dlouhá hodnota tokenu, kterou jste zkopírovali dříve v této lekci).Nahraďte <token svým tokenem> .
export AZP_TOKEN=token
Nastavte proměnnou
AZP_POOL
prostředí tak, aby určila název fondu agentů. Dříve jste vytvořili fond s názvem MyAgentPool.export AZP_POOL=MyAgentPool
Nastavte proměnnou
AZP_AGENT_VERSION
prostředí tak, aby určila nejnovější verzi agenta.export AZP_AGENT_VERSION=$(curl -s https://api.github.com/repos/microsoft/azure-pipelines-agent/releases | jq -r '.[0].tag_name' | cut -d "v" -f 2)
Kanál YAML na počítači s Linuxem musí používat nejnovější verzi agenta, i když je předběžná verze. Software agenta se neustále aktualizuje, takže informace
curl
o verzi z úložiště GitHub. Příkaz používájq
ke čtení nejnovější verze z vráceného řetězce JSON.Vytiskněte verzi agenta do konzoly. Volitelně zkontrolujte, jestli se jedná o nejnovější verzi.
echo $AZP_AGENT_VERSION
Vytvořte spustitelný skript a spusťte ho:
chmod u+x build-agent.sh sudo -E ./build-agent.sh
sudo
umožňuje, aby se skript spustil jako uživatel root. Argument-E
zachová aktuální proměnné prostředí, včetně těch, které jste nastavili, aby byly pro skript k dispozici.Při spuštění skriptu uvidíte připojení agenta k Azure DevOps, uvidíte ho přidané do fondu agentů a uvidíte, jak se testuje připojení agenta.
Ověřte, že je agent spuštěný.
Úspěšně jste nainstalovali nástroje sestavení a software agenta na virtuální počítač. V rámci ověřovacího kroku přejděte do Azure DevOps a prohlédněte si agenta ve fondu agentů.
V Azure DevOps přejděte do projektu Space Game – web – Agent .
Vyberte nastavení projektu.
V části Pipelines (Kanály) vyberte Agent pools (Fondy agentů).
Vyberte MyAgentPool.
Vyberte kartu Agenti.
Uvidíte, že váš agent je online a připravený přijímat úlohy sestavení.
Tip
Pokud se agent sestavení zobrazí jako offline, zkuste chvíli počkat a pak stránku aktualizovat.
Vyberte svého agenta MyLinuxAgent.
Vyberte kartu Schopnosti.
Během instalace proces konfigurace naskenuje agenta sestavení pro funkce nástrojů. Vidíte, že
npm
je uvedený jako jeden z nich. Vzpomeňte si, že jste zadali původní konfiguraci sestavení, kteránpm
musí být nainstalovaná v agentu.Když určíte, který fond agentů se má použít, můžete do oddílu
demands
zahrnout kteroukoli z těchto položek. Zahrnutím zajistíte, že Azure Pipelines zvolí agenta sestavení, který má software, který potřebujete k sestavení aplikace. Umožňuje také vytvářet fondy agentů s různými konfiguracemi softwaru. Azure Pipelines vybere správnou konfiguraci na základě vašich požadavků.