Wybieranie własnego agenta kompilacji lub agenta kompilacji hostowanego przez firmę Microsoft

Ukończone

W tej lekcji poznasz niektóre czynniki, które należy wziąć pod uwagę podczas wybierania agenta kompilacji. Dowiesz się więcej na temat niektórych korzyści i ograniczeń związanych z używaniem agenta hostowanego przez firmę Microsoft oraz tego, co jest związane z konfigurowaniem własnego prywatnego agenta kompilacji.

Czym są agenci kompilacji i pule agentów?

Agent kompilacji to system, który wykonuje zadania kompilacji. Należy go traktować jako dedykowany serwer, który uruchamia proces kompilacji.

Załóżmy, że masz projekt usługi Azure Pipelines, który odbiera żądania kompilacji wiele razy dziennie, a może masz wiele projektów, które mogą używać tego samego typu agenta kompilacji. Możesz utworzyć pule agentów, aby zagwarantować stałą dostępność serwerów, które przetwarzają żądania kompilacji.

Po wyzwoleniu kompilacji usługa Azure Pipelines wybiera z puli dostępnego agenta kompilacji. Jeśli wszyscy agenci są zajęci, proces czeka na udostępnienie agenta.

W przypadku używania agenta hostowanego przez firmę Microsoft musisz wskazać obraz maszyny wirtualnej w puli. Oto przykład z istniejącej konfiguracji kompilacji, która używa agenta kompilacji Ubuntu 20.04:

pool:
  vmImage: 'ubuntu-20.04'
  demands:
  - npm

W przypadku używania agenta hostowanego przez firmę Microsoft musisz użyć atrybutu vmImage do określenia typu systemu. Firma Microsoft udostępnia wiele typów obrazów maszyn wirtualnych, między innymi z systemami Windows, macOS i różnymi odmianami systemu Linux.

W sekcji demands określa się, jakie oprogramowanie lub funkcje są wymagane na maszynie do kompilacji.

W przypadku używania agenta kompilacji z własnej, prywatnej puli musisz podać jej nazwę. Oto przykład:

pool:
  name: 'MyAgentPool'
  demands:
  - npm

Jeśli nie potrzebujesz sekcji demands, możesz skrócić składnię:

pool: 'MyAgentPool'

W dalszej części tego modułu utworzysz agenta kompilacji i dodasz go do puli.

Jakiego rodzaju agentów można używać?

Podczas wybierania agenta kompilacji należy wziąć pod uwagę dwa czynniki:

  • System operacyjny, na którym chcesz skompilować
  • Niezależnie od tego, czy możesz użyć agenta hostowanego przez firmę Microsoft, czy też musisz podać własnego agenta

Usługa Azure Pipelines obsługuje następujące systemy operacyjne:

Wybrany agent kompilacji zależy głównie od narzędzi używanych do kompilowania kodu. Na przykład jeśli do kompilowania aplikacji używasz programu Xcode, możesz wybrać agenta dla systemu macOS. Jeśli używasz programu Visual Studio, prawdopodobnie wybierzesz agenta dla systemu Windows.

W Twojej istniejącej konfiguracji kompilacji jest używany agent hostowany przez firmę Microsoft. Hostowani agenci działają w infrastrukturze zapewnianą przez firmę Microsoft.

Prywatny agent używa podanej infrastruktury. Agent może być systemem, który działa w chmurze lub w centrum danych. Dowolny system działa, o ile agent spełnia Twoje wymagania i może nawiązać połączenie z usługą Azure Pipelines. W tym module użyjesz maszyny wirtualnej działającej na platformie Azure, którą udostępniamy.

Kiedy należy używać własnego agenta kompilacji?

W przypadku wielu zadań kompilacji agent hostowany przez firmę Microsoft wykonuje wszystko, czego potrzebujesz. Użycie takiego agenta to najprostszy sposób na rozpoczęcie pracy.

Wszystkimi zabezpieczeniami oraz innymi aktualizacjami systemu operacyjnego zajmuje się firma Microsoft. Wystarczy zdefiniować konfigurację kompilacji, którą chcesz uruchomić.

Ponadto hostowani agenci zawierają oprogramowanie do kompilowania powszechnych typów aplikacji. W procesie kompilacji można dodać inne, potrzebne oprogramowanie.

Agenci hostowani przez firmę Microsoft mają kilka ograniczeń, takich jak:

  • Czas trwania kompilacji: zadanie kompilacji może być uruchamiane przez maksymalnie sześć godzin.
  • Miejsce na dysku: Hostowani agenci zapewniają stałą ilość miejsca do magazynowania dla źródeł i danych wyjściowych kompilacji. Może to nie wystarczyć do magazynowania.
  • Procesor CPU, pamięć i sieć: hostowani agenci działają na maszynach wirtualnych ogólnego przeznaczenia platformy Microsoft Azure. Parametr Standard_DS2_v2 opisuje oczekiwaną charakterystykę procesora, pamięci i sieci.
  • Interakcyjność: nie można zalogować się do hostowanego agenta.
  • Udziały plików: nie można usuwać artefaktów kompilacji do udziałów plików UNIVERSAL Naming Convention (UNC).

Mimo że hostowani agenci są stosunkowo łatwe do skonfigurowania, istnieją pewne korzyści wynikające z używania własnych agentów kompilacji, pomijając właśnie opisane ograniczenia.

Na przykład w przypadku korzystania z hostowanych agentów udostępniasz infrastrukturę innym użytkownikom usługi Azure DevOps. Chociaż zwykle uruchomienie kompilacji trwa tylko kilka sekund, może to potrwać dłużej w zależności od obciążenia systemu firmy Microsoft.

Ponadto w przypadku korzystania z hostowanych agentów otrzymujesz czysty system z każdą kompilacją. W przypadku korzystania z własnego agenta kompilacji możesz zdecydować, czy wykonać czystą kompilację za każdym razem, czy też wykonać kompilację przyrostową. W przypadku kompilacji przyrostowej kompilujesz istniejące narzędzia kompilacji i skompilowany kod. Ukończenie kompilacji przyrostowej może zająć mniej czasu, ponieważ system ma już zainstalowane wiele narzędzi kompilacji i składników zależnych.

Ponieważ infrastruktura kompilacji należy do Ciebie, musisz zapewnić aktualność oprogramowania i poprawek zabezpieczeń na swoich agentach kompilacji.

Jak skonfigurować prywatnego agenta kompilacji?

Prywatny agent kompilacji zawiera oprogramowanie wymagane do kompilowania aplikacji. Zawiera również oprogramowanie agenta, które umożliwia systemowi łączenie się z usługą Azure Pipelines i odbieranie zadań kompilacji.

Podczas konfigurowania agenta prywatnego należy podać infrastrukturę, na której są uruchamiane kompilacje. Zapewnia to elastyczność wywoływania i utrzymywania agentów.

Możesz na przykład:

  • Ręczne konfigurowanie agenta kompilacji: możesz instalować system, logować się i interaktywnie instalować narzędzia kompilacji i oprogramowanie agenta.

  • Automatyzowanie procesu: uruchamiasz system i uruchamiasz skrypt lub narzędzie, aby zainstalować narzędzia kompilacji i oprogramowanie agenta. Agenta możesz skonfigurować w procesie aprowizacji lub po przejściu systemu do trybu online.

    Na przykład po uruchomieniu agentów kompilacji na platformie Azure można użyć szablonu usługi Azure Resource Manager (szablonu usługi ARM) lub Bicep, aby wyświetlić system i skonfigurować go do działania jako agent kompilacji— wszystko w jednym kroku. Innym sposobem na zautomatyzowanie procesu jest użycie narzędzia Terraform firmy HashiCorp. Narzędzie Terraform współdziała z wieloma typami infrastruktury, w tym z platformą Azure.

  • Utwórz obraz: utworzysz obraz lub migawkę skonfigurowanego środowiska. Następnie za pomocą tego obrazu utwórz wymaganą liczbę identycznych systemów w puli.

Konfiguracja ręczna to dobry sposób na rozpoczęcie pracy, ponieważ umożliwia zrozumienie procesu. Pozwala to również szybko przygotować środowisko, gdy potrzebny jest tylko jeden agent kompilacji.

Automatyzacja jest przydatna, gdy potrzebujesz wielu agentów kompilacji lub musisz regularnie tworzyć i wyłączać infrastrukturę kompilacji. Możesz przejść z procesu ręcznego do zautomatyzowanego procesu, gdy potrzebujesz wielu agentów.

Obrazy są formą automatyzacji. Mogą one pomóc zaoszczędzić czas, ponieważ wszystkie oprogramowanie jest wstępnie skonfigurowane. W ramach kompromisu może być konieczne okresowe ponowne kompilowanie obrazów w celu uwzględnienia najnowszych poprawek systemu operacyjnego i narzędzi kompilacji. Program Packer firmy HashiCorp to popularne narzędzie do tworzenia obrazów.

W przypadku scenariusza Space Game decydujesz się na użycie prywatnego agenta kompilacji.

Sprawdź swoją wiedzę

1.

Załóżmy, że tworzysz grę wideo. Proces kompilacji trwa dwie godziny i używa 18 GB do 20 GB miejsca na dysku w celu skompilowania zasobów gry. Jakiego rodzaju agenta kompilacji można użyć?

2.

Załóżmy, że tworzysz aplikację działającą w systemach macOS, Linux i Windows. Jak utworzyć aplikację dla każdej docelowej platformy?

3.

Własny agent kompilacji: