Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule przedstawiono architekturę referencyjną do budowy potoku ciągłej integracji i ciągłego wdrażania (CI/CD) przy użyciu usługi Azure Pipelines. Użyj tej architektury jako punktu wyjścia, jeśli musisz zautomatyzować tworzenie, testowanie i wdrażanie aplikacji w środowiskach przejściowych i produkcyjnych w Azure. Architektura definiuje trzy potoki: pull request (PR), ciągłą integrację (CI) i ciągłe wdrażanie (CD), oraz pokazuje, jak współpracują one z Azure Repos, Azure Key Vault i Azure Monitor, aby bezpiecznie weryfikować, kompilować i wdrażać aplikacje.
Architektura
Pobierz plik Visio tego projektu.
Notatka
Chociaż w tym artykule opisano CI/CD dla zmian aplikacji, usługa Azure Pipelines może również służyć do tworzenia potoków CI/CD dla zmian w infrastrukturze jako kod (IaC).
Dataflow
Dane przepływają przez scenariusz w następujący sposób:
Potok zadań PR — Pull request (PR) do Azure Repos Git wyzwala potok zadań PR. Ten pipeline przeprowadza szybkie kontrole jakości. Te kontrole powinny obejmować następujące elementy:
- Tworzenie kodu, który wymaga ściągania zależności z systemu zarządzania zależnościami.
- Korzystanie z narzędzi do analizowania kodu, takich jak analiza kodu statycznego, linting i skanowanie zabezpieczeń
- Testy jednostkowe
Jeśli którykolwiek z testów zakończy się niepowodzeniem, działanie potoku zostanie przerwane, a programista będzie musiał wprowadzić wymagane zmiany. Jeśli wszystkie sprawdzenia zostaną zaliczone, potok powinien wymagać przeglądu PR. Jeśli przegląd pull requestu zakończy się niepowodzeniem, potok zakończy się, a deweloper będzie musiał wprowadzić wymagane zmiany. Jeśli wszystkie kontrole i przeglądy żądań ściągnięcia przejdą pomyślnie, żądanie ściągnięcia zostanie pomyślnie scalone.
Potok ciągłej integracji — Scalanie w Azure Repos Git wyzwala potok ciągłej integracji. Ten potok uruchamia te same kontrole co potok PR, a także testy integracyjne. Potok CI uruchamia testy integracyjne zamiast potoku PR z dwóch powodów:
- Testy integracji mogą być intensywnie obciążane zasobami, dlatego uruchomienie ich po scaleniu równoważy szybkość programowania z wykrywaniem błędów.
- To, że testy przechodzą w PR, nie gwarantuje, że będą nadal przechodzić po scaleniu, ponieważ zmiany w gałęzi głównej mogą wprowadzić nowe problemy, które można wykryć dopiero w testach po scaleniu.
Te testy integracji nie powinny wymagać wdrożenia rozwiązania, ponieważ artefakty kompilacji nie zostały jeszcze utworzone. Jeśli test wymaga wpisów tajnych, potok pobiera je z Azure Key Vault. Jeśli sprawdzanie zakończy się niepowodzeniem, potok kończy się, a deweloper musi wprowadzić wymagane zmiany. Pomyślne uruchomienie tego potoku powoduje utworzenie i opublikowanie artefaktów kompilacji.
Potok CD - Publikacja artefaktów wyzwala potok CD.
Wersja CD do środowiska testowego — Potok CD pobiera artefakty kompilacji utworzone w potoku CI i wdraża rozwiązanie w środowisku testowym. Następnie potok uruchamia testy akceptacyjne na środowisko tymczasowe, aby zweryfikować wdrożenie. Jeśli jakikolwiek test akceptacyjny zakończy się niepowodzeniem, proces zostanie przerwany, a deweloper będzie musiał wprowadzić wymagane zmiany. Jeśli testy zakończą się powodzeniem, można zaimplementować zadanie ręcznego sprawdzania poprawności, aby osoba lub grupa mogła zweryfikować wdrożenie i wznowić potok.
wydanie CD do produkcji — jeśli ręczna interwencja zostanie wznowiona lub nie jest wdrożona, pipeline wydaje rozwiązanie do środowiska produkcyjnego. Pipelina powinna uruchamiać testy smoke w środowisku produkcyjnym, aby upewnić się, że wydanie działa zgodnie z oczekiwaniami. Jeśli krok interwencji ręcznej spowoduje anulowanie, wydanie zakończy się niepowodzeniem, lub testy dymne zawiodą, wydanie zostanie wycofane, potok się zakończy, a deweloper będzie musiał wprowadzić wymagane zmiany.
monitorowanie — usługa Azure Monitor zbiera dane dotyczące obserwacji, takie jak dzienniki i metryki, dzięki czemu operator może analizować dane dotyczące kondycji, wydajności i użycia. Usługa Application Insights zbiera wszystkie dane monitorowania specyficzne dla aplikacji, takie jak ślady. Usługa Azure Log Analytics służy do przechowywania wszystkich tych danych.
Składniki
Repozytorium Azure Repos Git służy jako repozytorium kodu, które zapewnia kontrolę wersji i platformę do współpracy projektów.
azure Pipelines umożliwia tworzenie, testowanie, pakowanie i wydawanie kodu aplikacji i infrastruktury. W tym przykładzie istnieją trzy odrębne przepływy pracy z następującymi obowiązkami:
- Przepływy pracy dla pull requestów sprawdzają kod przed zezwoleniem na scalanie poprzez linting, kompilację i testy jednostkowe.
- Potoki CI uruchamiane są po scaleniu kodu. Wykonują tę samą walidację, co pipeline'y PR, ale dodają testy integracyjne i publikują artefakty kompilacji, jeśli wszystko przebiegnie pomyślnie.
- Pipelines CI/CD wdrażają artefakty kompilacji, uruchamiają testy akceptacyjne i wdrażają do środowiska produkcyjnego.
kanały informacyjne Azure Artifacts umożliwiają zarządzanie pakietami oprogramowania, takimi jak Maven, npm i NuGet oraz udostępnianie ich. Kanały informacyjne umożliwiają zarządzanie cyklem życia pakietów, w tym przechowywanie wersji, promowanie i wycofywanie pakietów, co pomaga zapewnić zespołowi korzystanie z najnowszych i najbezpieczniejszych wersji zależności.
Key Vault umożliwia zarządzanie bezpiecznymi danymi w ramach Twojego rozwiązania, w tym tajemnicami, kluczami szyfrowania i certyfikatami. W tej architekturze używa się jej do przechowywania sekretów aplikacji. Dostęp do tych tajemnic jest uzyskiwany za pośrednictwem potoku danych. Dostęp do tajemnic może być uzyskany przez Azure Pipelines z użyciem zadania Key Vault lub poprzez łączenie tajemnic z Key Vault .
Monitor to zasób, który zbiera i przechowuje metryki i dzienniki, dane telemetryczne aplikacji i metryki platformy dla usług platformy Azure. Te dane służą do monitorowania aplikacji, konfigurowania alertów, pulpitów nawigacyjnych i przeprowadzania analizy głównej przyczyny awarii.
application insights to usługa monitorowania, która zapewnia wgląd w wydajność i użycie aplikacji internetowych w czasie rzeczywistym.
obszar roboczy usługi Log Analytics udostępnia centralną lokalizację, w której można przechowywać, wykonywać zapytania i analizować dane z wielu źródeł, w tym zasobów platformy Azure, aplikacji i usług.
Alternatywy
Chociaż ten artykuł koncentruje się na usłudze Azure Pipelines, możesz rozważyć następujące alternatywy:
Azure DevOps Server można używać jako zamiennika dla rozwiązań lokalnych.
Jenkins to narzędzie typu open source służące do automatyzowania kompilacji i wdrożeń.
GitHub Actions umożliwiają automatyzowanie workflowów CI/CD bezpośrednio na GitHubie.
Repozytoria GitHub mogą być używane jako repozytorium kodu. Usługa Azure Pipelines bezproblemowo integruje się z repozytoriami GitHub.
Ten artykuł koncentruje się na ogólnych praktykach CI/CD w narzędziu Azure Pipelines. Poniżej przedstawiono niektóre środowiska obliczeniowe, w których można rozważyć wdrożenie:
App Service to oparta na protokole HTTP usługa do hostowania aplikacji internetowych, interfejsów API REST i zapleczy mobilnych. Możesz programować w ulubionym języku, a aplikacje są uruchamiane i skalowane z łatwością zarówno w środowiskach opartych na systemach Windows, jak i Linux. Usługa App Service obsługuje miejsca wdrożenia, takie jak przejściowe i produkcyjne, dzięki czemu można wdrożyć aplikację w miejscu przejściowym i zwolnić ją w miejscu produkcyjnym.
Azure Virtual Machines obsługuje obciążenia wymagające wysokiego stopnia kontroli lub zależą od składników i usług systemu operacyjnego, które nie są możliwe w usłudze App Service.
azure Power Platform to zbiór usług w chmurze, które umożliwiają użytkownikom tworzenie, wdrażanie i zarządzanie aplikacjami bez konieczności posiadania wiedzy technicznej lub infrastruktury.
azure Functions to bezserwerowa platforma obliczeniowa, której można użyć do tworzenia aplikacji. Za pomocą usługi Functions można integrować usługi za pomocą wyzwalaczy i powiązań. Funkcje obsługują również miejsca wdrożeniowe, takie jak testowe i produkcyjne. Aplikację można wdrożyć w gnieździe testowym i przenieść do gniazda produkcyjnego.
azure Kubernetes Service (AKS) to zarządzany klaster Kubernetes na platformie Azure. Kubernetes to platforma orkiestracji kontenerów typu open source.
usługa Azure Container Apps umożliwia uruchamianie konteneryzowanych aplikacji na platformie bezserwerowej.
Szczegóły scenariusza
Korzystanie ze sprawdzonych praktyk ciągłej integracji i ciągłego wdrażania w celu wdrożenia zmian aplikacji lub infrastruktury zapewnia różne korzyści, takie jak:
- Krótsze Cykle Wydawania — zautomatyzowane procesy CI/CD umożliwiają szybsze wdrażanie niż w przypadku procesów ręcznych. Wiele organizacji wdraża wiele razy dziennie.
- lepsza jakość kodu — bramy jakości w potokach ciągłej integracji, takie jak linting i testy jednostkowe, powodują zwiększenie jakości kodu.
- Mniejsze ryzyko wdrożenia — odpowiednie praktyki CI/CD znacząco zmniejszają ryzyko wdrażania nowych funkcji, ponieważ można je przetestować przed wdrożeniem.
- Zwiększona produktywność — zautomatyzowane CI/CD uwalnia programistów od pracy nad ręcznymi integracjami i wdrożeniami, aby mogli skupić się na nowych funkcjach.
- Włącz możliwość cofania zmian — chociaż praktyki CI/CD (ciągłej integracji i ciągłego wdrażania) obniżają liczbę wydanych usterek lub regresji, możliwość ich wystąpienia nadal istnieje. CI/CD może umożliwiać automatyczne wycofywanie do poprzednich wersji.
Potencjalne przypadki użycia
Rozważ użycie Azure Pipelines oraz procesów CI/CD dla:
- Przyspieszanie opracowywania i wdrażania aplikacji.
- Tworzenie jakości i spójności w zautomatyzowanym procesie kompilacji i wydawania.
- Zwiększanie stabilności i czasu pracy aplikacji.
Zagadnienia dotyczące
Te zagadnienia obejmują implementację filarów platformy Azure Well-Architected Framework, która jest zestawem wytycznych, których można użyć do poprawy jakości obciążenia. Aby uzyskać więcej informacji, zobacz Microsoft Azure Well-Architected Framework.
Doskonałość operacyjna
Rozważ zaimplementowanie infrastruktury jako kodu (IaC) w celu zdefiniowania swojej infrastruktury i wdrożenia jej w pipeline'ach.
Użyj zmiennych wydania w definicjach wydania, aby napędzać zmiany konfiguracji środowisk. Zmienne w wydaniu mogą być ograniczone do całego wydania lub danego środowiska. W przypadku używania zmiennych dla informacji tajnych upewnij się, że wybrano ikonę kłódki.
Rozważ użycie własnych agentów , jeśli wdrażasz je w zasobach uruchomionych w zabezpieczonej sieci wirtualnej lub jeśli uruchamiasz dużą liczbę kompilacji. Agenty hostowane samodzielnie mogą pomóc przyspieszyć kompilacje w opłacalny sposób na dużą skalę.
Rozważ użycie usługi Application Insights i innych narzędzi do monitorowania tak wcześnie, jak to możliwe w procesie wdrażania. Wiele organizacji rozpoczyna monitorowanie tylko w swoim środowisku produkcyjnym. Monitorując inne środowiska, można zidentyfikować usterki wcześniej w procesie programowania i uniknąć problemów w środowisku produkcyjnym.
Rozważ użycie oddzielnych zasobów monitorowania dla środowiska produkcyjnego.
Rozważ użycie potoków YAML zamiast interfejsu klasycznego. Potoki YAML mogą być traktowane jak każdy inny kod. Potoki YAML można na przykład zaewidencjonować pod kątem kontroli źródła i wersji.
Rozważ użycie szablonów YAML w celu promowania ponownego użycia i uproszczenia potoków. Na przykład pipeline'y PR i CI są podobne. Dla obu potoków można użyć jednego szablonu sparametryzowanego.
Rozważ utworzenie środowisk poza środowiskiem przejściowym i produkcyjnym, aby obsługiwać działania, takie jak ręczne testowanie akceptacyjne użytkowników, testowanie wydajności i obciążenia oraz wycofywanie.
Optymalizacja kosztów
Optymalizacja kosztów dotyczy sposobów zmniejszenia niepotrzebnych wydatków i poprawy wydajności operacyjnej. Aby uzyskać więcej informacji, zobacz Omówienie filaru optymalizacji kosztów.
Koszty usługi Azure DevOps zależą od liczby użytkowników w organizacji, którzy wymagają dostępu, wraz z innymi czynnikami, takimi jak liczba wymaganych współbieżnych kompilacji/wydań i liczba użytkowników testowych. Aby uzyskać więcej informacji, zobacz cennik usługi Azure DevOps.
Ten kalkulator cen zawiera oszacowanie uruchamiania usługi Azure DevOps z 20 użytkownikami.
Usługa Azure DevOps jest rozliczana według poszczególnych użytkowników miesięcznie. Mogą wystąpić dodatkowe opłaty w zależności od liczby potrzebnych równoczesnych potoków, a także dodatkowych użytkowników testowych lub licencji dla podstawowych użytkowników.
Zabezpieczenia
Przy rozważaniu wyboru między agentami hostowanymi przez firmę Microsoft a agentami własnymi, należy rozważyć korzyści związanych z bezpieczeństwem.
Upewnij się, że wszystkie zmiany w środowiskach są wykonywane za pośrednictwem pipeline'ów. Zaimplementuj mechanizmy kontroli dostępu opartej na rolach (RBAC) na zasadzie najniższych uprawnień, uniemożliwiając użytkownikom dostęp do środowisk.
Rozważ zintegrowanie kroków w Azure Pipelines, aby śledzić zależności, zarządzać licencjonowaniem, skanować pod kątem luk w zabezpieczeniach i aktualizować zależności.
Następne kroki
Utwórz swój pierwszy potokKompilowanie, testowanie i wdrażanie projektów .NET CoreKompilowanie i wdrażanie aplikacji internetowej Node.js