Ćwiczenie — tworzenie agenta kompilacji uruchomionego na platformie Azure
W tej lekcji, aby skonfigurować agenta kompilacji, którego można użyć w usłudze Microsoft Azure Pipelines, użyjesz maszyny wirtualnej działającej na platformie Microsoft Azure. Udostępniamy maszynę wirtualną, której można użyć przez czas trwania tego modułu.
W tej jednostce wykonasz następujące zadania:
- Utwórz maszynę wirtualną z systemem Ubuntu na platformie Azure, aby służyć jako agent kompilacji.
- Tworzenie puli agentów w usłudze Microsoft Azure DevOps.
- Utwórz token dostępu do uwierzytelniania agenta za pomocą usługi Azure DevOps.
- Skonfiguruj agenta za pomocą oprogramowania wymaganego do utworzenia witryny internetowej Space Game.
- Skonfiguruj agenta, aby nawiązać połączenie z usługą Azure DevOps, aby mógł odbierać zadania kompilacji.
- Sprawdź, czy agent jest połączony z usługą Azure DevOps i jest gotowy do odbierania zadań kompilacji.
Istnieje wiele sposobów tworzenia maszyny wirtualnej na platformie Azure. W tej lekcji utworzysz maszynę wirtualną z systemem Ubuntu przy użyciu interaktywnego terminalu o nazwie Cloud Shell.
Aby skonfigurować maszynę wirtualną, możesz wybrać kilka opcji:
- W przypadku maszyny wirtualnej z systemem Linux można połączyć się bezpośrednio za pośrednictwem protokołu SSH i interaktywnie skonfigurować system.
- Wdrożenie można zautomatyzować przy użyciu szablonu ARM, Bicep lub innego narzędzia do aprowizacji.
- Jeśli musisz wdrożyć wielu agentów kompilacji, możesz utworzyć obraz maszyny wirtualnej ze wstępnie zainstalowanym oprogramowaniem.
Skonfigurowanie systemu interakcyjnego jest dobrym sposobem na rozpoczęcie pracy, ponieważ ułatwia zrozumienie procesu i potrzebnych informacji. Aby uprościć ten proces, połącz się z maszyną wirtualną z systemem Ubuntu za pośrednictwem protokołu SSH i uruchom skrypty powłoki, aby skonfigurować agenta kompilacji.
Notatka
Jeśli nie znasz nawiązywania połączenia z systemami Linux lub konfigurowania ich, po prostu postępuj zgodnie z instrukcjami. Te same pojęcia można zastosować do agentów kompilacji systemu Windows.
Tworzenie maszyny wirtualnej z systemem Linux
W tej sekcji utworzysz maszynę wirtualną z systemem Ubuntu 20.04, która będzie służyć jako agent kompilacji. Maszyna wirtualna nie jest jeszcze skonfigurowana jako agent kompilacji ani nie ma żadnych narzędzi wymaganych do utworzenia aplikacji internetowej Space Game. Wkrótce skonfigurujesz to.
Tworzenie usługi Cloud Shell za pośrednictwem witryny Azure Portal
Ważny
Do wykonania ćwiczeń w tym module potrzebna jest własna subskrypcja platformy Azure.
Przejdź do witryny Azure Portal i zaloguj się.
Z menu wybierz pozycję Cloud Shell. Po wyświetleniu monitu wybierz opcję Bash.
Notatka
Usługa Cloud Shell wymaga, aby zasób usługi Azure Storage utrwalał wszystkie pliki utworzone w usłudze Cloud Shell. Po pierwszym otwarciu usługi Cloud Shell zostanie wyświetlony monit o utworzenie grupy zasobów, konta magazynu i udziału usługi Azure Files. Ta konfiguracja jest automatycznie używana dla wszystkich przyszłych sesji usługi Cloud Shell.
Wybieranie regionu platformy Azure
Region to co najmniej jedno centrum danych platformy Azure w lokalizacji geograficznej. Przykładami regionów są Wschodnie stany USA, Zachodnie stany USA i Europa Północna. Każdy zasób Azure, w tym maszyna wirtualna Azure, jest przypisany do regionu.
Aby ułatwić uruchamianie poleceń, zacznij od wybrania domyślnego regionu. Po określeniu regionu domyślnego późniejsze polecenia używają tego regionu, chyba że określisz inny region.
W usłudze Cloud Shell, aby wyświetlić listę regionów dostępnych w ramach subskrypcji platformy Azure, uruchom następujące polecenie
az account list-locations
:az account list-locations \ --query "[].{Name: name, DisplayName: displayName}" \ --output table
W kolumnie
Name
w danych wyjściowych wybierz region, który jest blisko Ciebie. Na przykład wybierz pozycjęeastasia
lubwestus2
.Uruchom
az configure
, aby ustawić region domyślny. Zastąp<REGION>
wybraną nazwą regionu:az configure --defaults location=<REGION>
W tym przykładzie ustawiono
westus2
jako region domyślny:az configure --defaults location=westus2
Tworzenie grupy zasobów
Utwórz grupę zasobów zawierającą zasoby używane w tym module szkoleniowym.
Aby utworzyć grupę zasobów o nazwie tailspin-space-game-rg, uruchom następujące polecenie
az group create
:az group create --name tailspin-space-game-rg
Tworzenie maszyny wirtualnej
Aby utworzyć maszynę wirtualną, uruchom następujące polecenie az vm create
:
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
Utworzenie maszyny wirtualnej potrwa kilka minut.
Standard_DS2_v2 określa rozmiar maszyny wirtualnej. Rozmiar maszyny wirtualnej definiuje szybkość procesora, ilość pamięci, początkową ilość miejsca do magazynowania i oczekiwaną przepustowość sieci. Jest to ten sam rozmiar, który jest udostępniany przez agentów hostowanych przez firmę Microsoft. W praktyce można wybrać rozmiar zapewniający większą moc obliczeniową lub dodatkowe możliwości, takie jak przetwarzanie grafiki.
Argument --resource-group
określa grupę zasobów zawierającą wszystkie elementy, które należy utworzyć. Grupa zasobów umożliwia administrowanie wszystkimi maszynami wirtualnymi, dyskami, interfejsami sieciowymi i innymi elementami tworzącymi nasze rozwiązanie jako jednostkę.
Tworzenie puli agentów
Pamiętaj, że pula agentów zarządza agentami kompilacji. W tej sekcji utworzysz pulę agentów w usłudze Azure DevOps. Później określisz nazwę puli agentów podczas konfigurowania agenta, aby mógł zarejestrować się w odpowiedniej puli.
W usłudze Azure DevOps przejdź do projektu Space Game — web — Agent.
Wybierz pozycję Ustawienia projektu.
W obszarze Pipelineswybierz pozycję Agent pools.
Wybierz pozycję Dodaj pulę.
W oknie „Dodaj pulę” :
- W obszarze pula połączwybierz pozycję Nowy.
- W sekcji Typ puli wybierz opcję Self-hosted.
- W obszarze Namewprowadź MyAgentPool.
W praktyce należy wybrać bardziej opisową nazwę puli.
Wybierz pozycję Utwórz. Nowa pula agentów pojawia się na liście.
Tworzenie osobistego tokenu dostępu
Aby agent kompilacji zarejestrował się w usłudze Azure DevOps, potrzebny jest sposób na jego uwierzytelnienie.
W tym celu możesz utworzyć osobisty token dostępu. Osobisty token dostępu ( lub pat) jest alternatywą dla hasła. Możesz użyć tokenu pat do uwierzytelniania za pomocą usług, takich jak Azure DevOps.
Ważny
Podobnie jak w przypadku hasła, pamiętaj, aby zachować token dostępu w bezpiecznym miejscu. W tej sekcji zapiszesz token dostępu jako zmienną środowiskową, aby nie był wyświetlany w skrypcie powłoki.
W usłudze Azure DevOps otwórz ustawienia profilu, a następnie wybierz pozycję Osobiste tokeny dostępu.
Wybierz pozycję Nowy Token.
Wprowadź nazwę tokenu, na przykład Build agent.
W obszarze Zakresywybierz link Pokaż wszystkie zakresy u dołu.
Poszukaj pul agentów , a następnie wybierz Odczytzarządzanie &.
Wybierz pozycję Utwórz.
Skopiuj token do bezpiecznego miejsca.
Wkrótce użyjesz tokenu, aby umożliwić agentowi kompilacji uwierzytelnianie dostępu do usługi Azure Pipelines.
Nawiązywanie połączenia z maszyną wirtualną
W tej sekcji połączysz się z maszyną wirtualną z systemem Linux za pośrednictwem protokołu SSH, aby można było ją skonfigurować.
Pamiętaj, że nie możesz interaktywnie zalogować się do agenta hostowanego przez firmę Microsoft. Ponieważ prywatny agent kompilacji należy do Ciebie, możesz się do niego zalogować i skonfigurować go, jak chcesz.
Możliwość nawiązywania połączenia z agentem kompilacji umożliwia skonfigurowanie go za pomocą narzędzi potrzebnych do kompilowania oprogramowania. Umożliwia również rozwiązywanie problemów podczas budowania i konfigurowania potoku.
Aby uzyskać adres IP maszyny wirtualnej, uruchom
az vm show
w usłudze Cloud Shell:IPADDRESS=$(az vm show \ --name MyLinuxAgent \ --resource-group tailspin-space-game-rg \ --show-details \ --query [publicIps] \ --output tsv)
To polecenie przechowuje adres IP w zmiennej Bash o nazwie
IPADDRESS
.Wydrukuj adres IP maszyny wirtualnej do konsoli:
echo $IPADDRESS
Utwórz połączenie SSH z maszyną wirtualną. Zamiast $IPADDRESS wprowadź adres IP otrzymany w poprzednim kroku. Po wyświetleniu monitu wprowadź „tak”, aby kontynuować połączenie.
ssh azureuser@$IPADDRESS
Masz teraz połączenie z maszyną wirtualną za pośrednictwem protokołu SSH.
To polecenie działa, ponieważ wcześniej uruchomiłeś
az vm create
, podając opcję--generate-ssh-keys
. Ta opcja tworzy parę kluczy SSH, co umożliwia logowanie się do maszyny wirtualnej.
Instalowanie narzędzi kompilacji na maszynie wirtualnej
W tej sekcji skonfigurujesz maszynę wirtualną przy użyciu narzędzi wymaganych do utworzenia witryny internetowej Space Game.
Pamiętaj, że istniejący proces kompilacji używa następujących narzędzi:
- Zestaw SDK platformy .NET, który służy do kompilowania aplikacji
- Node.js, który służy do wykonywania zadań kompilacji
- npm, menedżer pakietów dla Node.js
- gulp, pakiet Node.js używany do minifikacji plików JavaScript i CSS
Są to podstawowe narzędzia wymagane przez proces kompilacji. Aby je zainstalować, pobierzesz i uruchomisz skrypt powłoki z usługi GitHub.
Notatka
Proces kompilacji używa innych narzędzi, takich jak node-sass, do konwertowania plików Sass (.scss) na pliki CSS (.css). Jednak Node.js instaluje te narzędzia podczas uruchamiania kompilacji.
Zacznijmy od zaktualizowania menedżera pakietów systemu Ubuntu o nazwie apt. Ta akcja pobiera najnowsze informacje z repozytoriów pakietów i zwykle jest pierwszą rzeczą wykonywaną podczas konfigurowania nowego systemu Ubuntu.
W połączeniu SSH zaktualizuj pamięć podręczną menedżera pakietów apt:
sudo apt-get update
sudo
uruchamia polecenie z uprawnieniami administratora lub root.Aby pobrać skrypt powłoki o nazwie build-tools.sh z usługi GitHub, uruchom następujące polecenie
curl
:curl https://raw.githubusercontent.com/MicrosoftDocs/mslearn-tailspin-spacegame-web/main/.agent-tools/build-tools.sh > build-tools.sh
Wydrukuj skrypt do terminalu, aby można było sprawdzić jego zawartość:
cat build-tools.sh
Zostanie wyświetlony następujący wynik:
#!/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
Skrypt instaluje Node.js, npm, gulp i .NET Core.
Ustawiając zmienną środowiskową
DOTNET_VERSION
, można określić wersję platformy .NET do zainstalowania. Jeśli nie ustawisz tej zmiennej, skrypt zainstaluje wersję używaną przez istniejącą konfigurację kompilacji. Dla celów szkoleniowych nie ustawiasz tej zmiennej. Zezwalasz skryptowi na używanie wersji domyślnej.Utwórz plik wykonywalny skryptu, a następnie uruchom skrypt:
chmod u+x build-tools.sh sudo ./build-tools.sh
Uruchomienie skryptu trwa kilka minut.
W praktyce można teraz uruchomić polecenia, aby sprawdzić, czy każdy składnik oprogramowania został pomyślnie zainstalowany.
Instalowanie oprogramowania agenta na maszynie wirtualnej
Nadszedł czas na zainstalowanie oprogramowania agenta na maszynie wirtualnej. To oprogramowanie umożliwia maszynie wirtualnej działanie jako agent kompilacji i odbieranie zadań kompilacji z usługi Azure Pipelines.
Proces rejestracji sprawdza zainstalowane oprogramowanie przed zarejestrowaniem agenta w usłudze Azure Pipelines. W związku z tym ważne jest skonfigurowanie agenta po zainstalowaniu wszystkich innych oprogramowania. W praktyce można zarejestrować agenta po raz drugi, jeśli konieczne jest zainstalowanie dodatkowego oprogramowania.
W dokumentacji wyjaśniono, jak ręcznie skonfigurować agentów instalowanych lokalnie dla systemu Linux oraz dla systemów macOS i Windows. Uruchamiasz skrypt powłoki, aby skonfigurować swojego agenta w podobny sposób, jak to robiłeś przy ustawianiu narzędzi kompilacji w poprzedniej sekcji.
Ważny
Skrypt, który uruchomisz tutaj, służy do celów szkoleniowych. W praktyce należy najpierw zrozumieć, jak każde polecenie w kompilnych skryptach wpływa na ogólny system. Na końcu modułu wskażemy dokumentację, która bardziej całkowicie opisuje Opcje.
Aby pobrać skrypt powłoki o nazwie build-agent.sh z GitHub, uruchom następujące polecenie
curl
:curl https://raw.githubusercontent.com/MicrosoftDocs/mslearn-tailspin-spacegame-web/main/.agent-tools/build-agent.sh > build-agent.sh
Wydrukuj skrypt do terminalu, aby można było sprawdzić jego zawartość:
cat build-agent.sh
Zostanie wyświetlony następujący wynik:
#!/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
Nie musisz rozumieć, jak działa każdy wiersz, ale oto krótkie podsumowanie działania tego skryptu:
- Pobiera pakiet agenta jako plik .tar.gz i wyodrębnia jego zawartość.
- W wyodrębnionych plikach jest skrypt:
- Uruchamia skrypt powłoki o nazwie installdependencies.sh w celu zainstalowania oprogramowania agenta.
- Uruchamia skrypt powłoki o nazwie config.sh w celu skonfigurowania agenta i zarejestrowania agenta w usłudze Azure Pipelines.
- Uruchamia skrypt powłoki o nazwie svc.sh, aby zainstalować i uruchomić usługę agenta.
Skrypt używa zmiennych środowiskowych, aby umożliwić podanie szczegółowych informacji o organizacji usługi Azure DevOps. Oto podsumowanie:
Zmienna powłoki Bash Opis Domyślny AZP_AGENT_VERSION
Wersja oprogramowania agenta do zainstalowania Wersja, która była ostatnio używana do testowania tego modułu AZP_URL
Adres URL organizacji usługi Azure DevOps (Brak) AZP_TOKEN
Osobisty token dostępu Brak AZP_AGENT_NAME
Nazwa agenta wyświetlana w usłudze Azure DevOps Nazwa hosta systemu AZP_POOL
Nazwa puli agentów domyślne AZP_WORK
Katalog roboczy agenta do wykonywania zadań kompilacji _praca Jeśli skrypt nie podaje wartości domyślnej dla zmiennej, która nie jest ustawiona, skrypt wyświetla komunikat o błędzie i natychmiast kończy działanie.
W kolejnych krokach ustaw następujące zmienne środowiskowe:
AZP_AGENT_VERSION
AZP_URL
AZP_TOKEN
AZP_AGENT_NAME
AZP_POOL
Na razie zalecamy pozostawienie innych zmiennych niezastawionych.
Ustaw zmienną środowiskową
AZP_AGENT_NAME
, aby określić nazwę agenta. Zalecamy MyLinuxAgent.export AZP_AGENT_NAME=MyLinuxAgent
Ustaw zmienną środowiskową
AZP_URL
, aby określić adres URL organizacji usługi Azure DevOps.Zastąp <> swoimi organizacjami. Nazwę można uzyskać na karcie przeglądarki, na której jest wyświetlana usługa Azure DevOps.
export AZP_URL=https://dev.azure.com/organization
Ustaw zmienną środowiskową
AZP_TOKEN
, aby określić osobisty token dostępu (długą wartość tokenu, którą skopiowałeś wcześniej w tej jednostce).Zastąp <> swoim tokenem.
export AZP_TOKEN=token
Ustaw zmienną środowiskową
AZP_POOL
, aby określić nazwę puli agentów. Wcześniej utworzono pulę o nazwie MyAgentPool.export AZP_POOL=MyAgentPool
Ustaw zmienną środowiskową
AZP_AGENT_VERSION
, aby określić najnowszą wersję 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)
Potok YAML na maszynie z systemem Linux musi używać najnowszej wersji agenta, nawet jeśli jest to wersja wstępna. Oprogramowanie agenta jest stale aktualizowane, więc jeśli chcesz uzyskać informacje o wersji,
curl
z repozytorium GitHub. Polecenie używajq
do odczytywania najnowszej wersji z zwróconego ciągu JSON.Wydrukuj wersję agenta na konsolę. Aby opcjonalnie upewnić się, że jest to najnowsza wersja, sprawdź.
echo $AZP_AGENT_VERSION
Utwórz plik wykonywalny skryptu, a następnie uruchom go:
chmod u+x build-agent.sh sudo -E ./build-agent.sh
sudo
umożliwia uruchamianie skryptu jako użytkownik root. Argument-E
zachowuje bieżące zmienne środowiskowe, w tym te ustawione, aby były dostępne dla skryptu.W miarę uruchamiania skryptu można zobaczyć, jak agent nawiązuje połączenie z usługą Azure DevOps, zobacz, jak został dodany do puli agentów, i sprawdź, czy połączenie agenta zostanie przetestowane.
Sprawdź, czy agent jest uruchomiony
Pomyślnie zainstalowano narzędzia kompilacji i oprogramowanie agenta na maszynie wirtualnej. W ramach kroku weryfikacji przejdź do usługi Azure DevOps i zobacz agenta w puli agentów.
W usłudze Azure DevOps przejdź do projektu Space Game - web - Agent.
Wybierz opcję Ustawienia projektu.
W obszarze Pipelineswybierz pozycję Agent pools.
Wybierz MyAgentPool.
Wybierz kartę Agenci.
Możesz zobaczyć, że twój agent jest online i gotowy do przyjmowania zadań kompilacyjnych.
Napiwek
Jeśli agent kompilacji wyświetla się jako offline, poczekaj chwilę, a następnie odśwież stronę.
Wybierz agenta MyLinuxAgent.
Wybierz kartę Możliwości.
Podczas instalacji proces konfiguracji przeskanował agenta kompilacji pod kątem możliwości narzędzi. Zobaczysz, że
npm
jest wyświetlana jako jedna z nich. Pamiętaj, że oryginalna konfiguracja kompilacji określiła, żenpm
musi być zainstalowana na agencie.Po określeniu, której puli agentów użyć, można uwzględnić dowolny z tych wpisów w sekcji
demands
. Uwzględnienie ich gwarantuje, że usługa Azure Pipelines wybierze agenta kompilacji, który ma oprogramowanie potrzebne do skompilowania aplikacji. Umożliwia również tworzenie pul agentów z różnymi konfiguracjami oprogramowania. Usługa Azure Pipelines wybierze poprawną konfigurację na podstawie wymagań.