Konfigurowanie aplikacji i maszyn wirtualnych

Ukończone

Często kompilowanie aplikacji i innego kodu niestandardowego dla rozwiązania platformy Azure. Aplikacje niestandardowe mogą obejmować witryny internetowe, interfejsy API i aplikacje w tle, które działają bez żadnej interakcji z człowiekiem. W tej lekcji dowiesz się, jak zaprojektować przepływ pracy w celu skompilowania i wdrożenia aplikacji wraz z jej infrastrukturą.

Kompilacja aplikacji

Przed ich użyciem należy skompilować lub skompilować wiele typów aplikacji. Proces kompilacji pobiera kod źródłowy aplikacji, wykonuje sekwencję działań, a następnie tworzy zestaw plików, które można wdrożyć.

Proces kompilacji kompiluje kod źródłowy do plików binarnych lub plików wykonywalnych. Proces kompilacji zwykle obejmuje inne działania, w tym kompresowanie plików obrazów, które będą obsługiwane użytkownikom witryny internetowej, tworzenie podszewki kodu w celu sprawdzenia, czy są zgodne z dobrymi praktykami kodowania, oraz uruchamianie testów jednostkowych, które weryfikują zachowanie poszczególnych elementów aplikacji. Możesz również wykonać kroki, takie jak cyfrowe podpisywanie plików, aby upewnić się, że nie można ich modyfikować.

Niezależnie od serii kroków, dane wyjściowe procesu kompilacji są artefaktem, który można wdrożyć. Artefakt jest zwykle zapisywany w systemie plików modułu uruchamiającego przepływ pracy. W kolejnych częściach przepływu pracy należy pracować z artefaktem, aby wdrożyć go za pośrednictwem środowisk i przetestować go w miarę postępu za pośrednictwem bram jakości zdefiniowanych w definicji przepływu pracy.

Uwaga

Być może znasz terminy ciągła integracja i ciągłe wdrażanie lub ciągła integracja/ciągłe wdrażanie. Proces kompilacji znajduje się w części ciągłej integracji przepływu pracy.

Artefakty przepływu pracy

Artefakty generowane w przepływie pracy nie są przechowywane w repozytorium Git. Pochodzą one z kodu źródłowego, ale nie są same w kodzie, więc nie należą do repozytorium kontroli źródła. Są one tworzone w systemie plików modułu uruchamiającego przepływ pracy. Nowy moduł uruchamiający jest tworzony dla każdego zadania przepływu pracy, więc potrzebny jest sposób udostępniania plików między zadaniami i modułami uruchamiającym.

Artefakty przepływu pracy umożliwiają przechowywanie plików w funkcji GitHub Actions i są one skojarzone z konkretnym uruchomieniem przepływu pracy. Akcja przepływu pracy służy actions/upload-artifact do poinstruowania funkcji GitHub Actions o przekazaniu pliku lub folderu z systemu plików modułu uruchamiającego jako artefakt przepływu pracy:

- name: Upload folder as a workflow artifact
  uses: actions/upload-artifact@v3
  with:
    name: my-artifact-name
    path: ./my-folder

Właściwość path to lokalizacja zawierająca skompilowany kod lub pliki wyjściowe w systemie plików modułu uruchamiającego zadania. Zawartość w tej lokalizacji zostanie przekazana do artefaktu. Można określić jeden plik, wiele plików lub folder.

Każdy artefakt ma nazwę, którą określasz przy użyciu name właściwości . Nazwa artefaktu służy do odwoływania się do niej w dalszej części przepływu pracy. Kolejne zadania przepływu pracy mogą pobierać artefakt, aby mogły z nim pracować, na przykład wdrożyć witrynę internetową na serwerze, który go hostuje:

Diagram przedstawiający przekazywanie przepływu pracy, a następnie odwoływanie się do artefaktu o nazwie

actions/download-artifact Użyj akcji , aby pobrać wszystkie artefakty przepływu pracy:

- uses: actions/download-artifact@v3

Możesz też określić nazwę artefaktu, aby pobrać tylko określony artefakt:

- uses: actions/download-artifact@v3
  with:
    name: my-artifact-name

Wdrażanie aplikacji

Proces kompilacji aplikacji generuje i przekazuje artefakt możliwy do wdrożenia. Późniejsze zadania w przepływie pracy wdróż artefakt. Sposób wdrażania aplikacji zależy od usługi używanej do jej hostowania.

Wdrażanie w usłudze Azure App Service

Twoja firma z aplikacjami do hostowania witryny internetowej korzysta z usługi aplikacja systemu Azure Service. Aplikację usługi App Service można utworzyć i skonfigurować przy użyciu aplikacji Bicep, ale jeśli chodzi o czas wdrażania aplikacji, masz kilka opcji uzyskania skompilowanej aplikacji do infrastruktury hostingu. Te opcje są zarządzane w ramach płaszczyzny danych usługi App Service.

Najczęstszym podejściem jest użycie azure/webapps-deploy akcji:

- uses: azure/webapps-deploy@v2
  with:
    app-name: my-app-service
    package: my-artifact-name/website.zip

Aby wdrożyć aplikację w usłudze App Service, musisz podać kilka informacji. Te informacje obejmują nazwę zasobu aplikacji usługi App Service, którą określasz przy użyciu app-name właściwości . Jak pokazano w poprzedniej lekcji, należy dodać dane wyjściowe do pliku Bicep i użyć zmiennej przepływu pracy, aby propagować nazwę aplikacji za pośrednictwem przepływu pracy. Należy również określić plik .zip z aplikacją do wdrożenia przy użyciu package właściwości . Zazwyczaj jest to ścieżka do artefaktu przepływu pracy.

Usługa App Service ma własny system uwierzytelniania płaszczyzny danych używany do wdrożeń. Akcja azure/webapps-deploy automatycznie obsługuje proces uwierzytelniania:

Diagram ilustrujący proces wymiany poświadczeń.

Akcja azure/webapps-deploy używa tożsamości skojarzonej z aktywną sesją platformy Azure zadania, która została zalogowana przy użyciu tożsamości obciążenia . Akcja tworzy i pobiera niezbędne poświadczenia do wdrożenia . Następnie używa poświadczeń wdrożenia podczas komunikowania się z interfejsem API płaszczyzny danych usługi App Service.

Usługa App Service udostępnia również kilka innych funkcji związanych z wdrażaniem, w tym miejsc wdrożenia. Miejsca ułatwiają bezpieczne wdrażanie nowych wersji aplikacji bez przestojów. Ułatwiają one również przygotowanie i rozgrzewkę nowej wersji aplikacji przed wysłaniem do niej ruchu produkcyjnego. W tym module nie używamy miejsc, ale udostępniamy link do dodatkowych informacji o nich na stronie Podsumowanie modułu.

Wdrażanie aplikacji w innych usługach platformy Azure

Platforma Azure oferuje wiele innych opcji hostowania aplikacji, z których każda ma własne podejście do wdrażania.

Usługa Azure Functions jest oparta na usłudze App Service i używa procesu wdrażania podobnego do opisanego wcześniej.

W przypadku wdrożenia na maszynie wirtualnej zwykle musisz nawiązać połączenie z wystąpieniem maszyny wirtualnej, aby zainstalować aplikację. Do organizowania wdrożenia na maszynach wirtualnych często trzeba używać wyspecjalizowanych narzędzi, takich jak Chef, Puppet lub Ansible.

Jeśli używasz platformy Kubernetes lub usługi Azure Kubernetes Service (AKS), zwykle użyj nieco innego podejścia do kompilowania i wdrażania rozwiązania. Po utworzeniu aplikacji przepływ pracy tworzy obraz kontenera i publikuje go w rejestrze kontenerów, z którego następnie odczytuje klaster Kubernetes. Ponieważ rejestr kontenerów przechowuje skompilowana aplikację, zwykle nie używasz artefaktu przepływu pracy.

W tym module skoncentrujemy się na usłudze aplikacja systemu Azure, aby zilustrować związane z tym koncepcje przepływu pracy. Na stronie Podsumowanie na końcu modułu udostępniamy linki do dodatkowych informacji na temat wdrażania w innych usługach hostingowych.

Testowanie aplikacji w przepływie pracy

W poprzednim module przedstawiono wartość i znaczenie uruchamiania testów automatycznych z przepływu pracy. Podczas wdrażania aplikacji dobrym rozwiązaniem jest uruchomienie niektórych testów wywołujących kod aplikacji. Takie testy zmniejszają ryzyko, że błąd aplikacji lub wdrożenia może spowodować przestój. W bardziej zaawansowanych scenariuszach można nawet wykonać zestaw przypadków testowych dla aplikacji, takich jak wywoływanie interfejsów API lub przesyłanie i monitorowanie transakcji syntetycznej.

Wiele aplikacji implementuje punkty końcowe sprawdzania kondycji. Gdy punkt końcowy kontroli kondycji odbiera żądanie, wykonuje serię kontroli w witrynie internetowej, takich jak zapewnienie, że bazy danych i usługi sieciowe są dostępne ze środowiska aplikacji. Odpowiedź zwrócona przez witrynę wskazuje, czy aplikacja jest w dobrej kondycji. Deweloperzy mogą pisać i dostosowywać własne kontrole kondycji zgodnie z wymaganiami aplikacji. Jeśli aplikacja ma punkt końcowy kontroli kondycji, często warto monitorować ją z przepływu pracy po zakończeniu zadania wdrażania.

Przepływ pracy wdrażania

W następnym ćwiczeniu zaktualizujesz przepływ pracy wdrażania, aby dodać nowe zadania w celu skompilowania aplikacji witryny internetowej i wdrożenia go w każdym środowisku:

Diagram przedstawiający poprawiony przepływ pracy, w tym nowe zadanie kompilacji i zadanie wdrożenia aplikacji.