Cykl życia projektowania
Strategia cyklu życia programowania zawiera kluczowe zagadnienia i zalecenia dotyczące repozytorium, gałęzi, zautomatyzowanych kompilacji, wdrażania i wycofywania strategii podczas automatycznego tworzenia strefy docelowej.
Strategia repozytorium
Uwagi dotyczące projektowania
Rozważ wdrożenie systemu kontroli wersji, takiego jak Git, aby zapewnić zespołowi elastyczność udostępniania kodu i zarządzania nim.
- Git to standardowy w branży system kontroli wersji. Jest to rozproszony system kontroli wersji, w którym lokalna kopia kodu jest kompletną wersją repozytorium.
Omówienie struktury repozytorium mono-repo i repozytorium multirepo.
- W strukturach mono repozytorium cały kod źródłowy znajduje się w jednym repozytorium.
- W strukturach multirepo wszystkie projekty są zorganizowane w oddzielne repozytoria.
Wybierz ustawienie widoczności, które odpowiada zawartości repozytorium.
- Dostęp do repozytoriów publicznych można uzyskać anonimowo.
- Repozytoria prywatne wymagają od użytkowników udzielenia dostępu do repozytorium i zalogowania się w celu uzyskania dostępu do usług.
- Możesz ustawić publiczną i prywatną widoczność dla usługi Azure DevOps Projects i repozytoriów GitHub.
Rozważ ustawienie uprawnień repozytorium, które ułatwiają kontrolowanie, kto może współtworzyć kod źródłowy i zarządzać innymi funkcjami.
- Możesz ustawić uprawnienia repozytorium dla usług Azure DevOps i GitHub.
Rozważ użycie wdrożenia zasobów Infrastruktura jako kod (IaC) na platformie Azure. Infrastruktura IaC umożliwia zarządzanie infrastrukturą w modelu deklaratywnym, co pomaga zmniejszyć nakład pracy nad konfiguracją, zapewnić spójność między wdrożeniami i uniknąć ręcznej konfiguracji środowiska.
Platforma Azure zapewnia obsługę IaC dla stref docelowych za pomocą następujących funkcji:
Zalecenia dotyczące projektowania
Użyj usługi Git jako systemu kontroli wersji.
Używanie repozytoriów prywatnych podczas tworzenia stref docelowych platformy Azure
Repozytoria publiczne są używane podczas udostępniania informacji niekonfidentalnych, takich jak przykłady automatyzacji, dokumentacja publiczna i materiały do współpracy typu open source.
Wdrożenie podejścia IaC do wdrażania, zarządzania zasobami w chmurze i zarządzania nimi oraz zarządzania nimi.
Strategia rozgałęzinia
Uwagi dotyczące projektowania
Rozważ użycie strategii gałęzi, która umożliwia zespołom współpracę nad lepszą i wydajną kontrolą wersji.
Rozważ użycie określonych konwencji nazewnictwa dla gałęzi.
Rozważ użycie uprawnień gałęzi do kontrolowania możliwości użytkownika.
Rozważ użycie zasad gałęzi, aby pomóc zespołom chronić ważne gałęzie programowania. Zasady, które mogą pomóc w wymuszaniu standardów jakości kodu i zarządzania zmianami. Przykłady zasad gałęzi to:
- Zawsze używaj żądań ściągnięcia do scalania zmian w ważnych gałęziach.
- Wymaganie minimalnej liczby recenzentów dla żądań ściągnięcia.
- Automatyczne dołączanie recenzentów kodu.
- Sprawdzanie połączonych elementów roboczych pozwala zachować możliwość śledzenia.
- Sprawdzanie rozwiązywania komentarzy sprawdza, czy wszystkie komentarze żądań ściągnięcia są rozwiązywane.
- Ograniczanie typów scalania.
Wdrożenie strategii żądania ściągnięcia może pomóc w utrzymaniu kontroli nad zmianami kodu scalanych z gałęziami.
- Zdefiniuj strategię scalania.
- Żądania ściągnięcia powinny być proste, a liczba plików jest przechowywana do minimum, aby ułatwić recenzentom wydajniejsze weryfikowanie zatwierdzeń i zmian.
- Żądania ściągnięcia powinny mieć jasne tytuły i opisy, aby recenzenci wiedzieli, czego oczekiwać podczas przeglądania kodu.
- Możesz użyć szablonów żądań ściągnięcia.
- Gałęzie pochodzenia można usunąć po zakończeniu żądań ściągnięcia, co zapewnia większą kontrolę i lepsze zarządzanie gałęziami.
Zalecenia dotyczące projektowania
Wdrożenie modelu programowania opartego na magistrali, w którym deweloperzy zatwierdzają pojedynczą gałąź. Ten model ułatwia ciągłą integrację. Cała praca funkcji jest wykonywana w magistrali, a wszystkie konflikty scalania są rozwiązywane po zakończeniu zatwierdzania.
Czy zespoły definiują spójne konwencje nazewnictwa dla gałęzi i używają ich do identyfikowania wykonanej pracy.
Ustaw uprawnienia, aby kontrolować, kto może odczytywać i aktualizować kod w gałęzi repozytorium Git. Możesz ustawić uprawnienia dla poszczególnych użytkowników i grup.
Ustaw zasady gałęzi:
- Wymagaj użycia żądań ściągnięcia dla scalania gałęzi z gałęzią główną.
- Wymagaj minimalnej liczby recenzentów dla żądań ściągnięcia.
- Zresetuj wszystkie głosy zatwierdzenia, aby usunąć wszystkie głosy zatwierdzenia, ale zachowaj głosy do odrzucenia lub oczekiwania za każdym razem, gdy gałąź źródłowa ulegnie zmianie.
- Automatycznie dołączaj recenzentów kodu.
- Sprawdź, czy nie ma rozwiązania komentarzy.
Ustaw opcję squasha jako strategię scalania, która umożliwia skondensowanie historii tematu git gałęzi podczas wykonywania żądań ściągnięcia. Zamiast dodawać każde zatwierdzenie w gałęzi tematu do historii gałęzi domyślnej, scalanie typu squash dodaje wszystkie zmiany plików do pojedynczego nowego zatwierdzenia w gałęzi domyślnej.
Automatyczne kompilacje
Uwagi dotyczące projektowania
Rozważ zaimplementowanie ciągłej integracji (CI). Ciągła integracja obejmuje scalenie całego kodu dewelopera z centralną bazą kodu zgodnie z regularnym harmonogramem i automatyczne wykonywanie standardowych kompilacji i procesów testowania.
Rozważ użycie wyzwalaczy ciągłej integracji:
- Azure Repos Git. Możesz skonfigurować gałęzie, ścieżki i tagi jako wyzwalacze w celu uruchomienia kompilacji ciągłej integracji.
- GitHub. Możesz skonfigurować gałęzie, ścieżki i wyzwalacze tagów w celu uruchomienia kompilacji ciągłej integracji.
Rozważ uwzględnienie testów jednostkowych IaC w procesie kompilacji w celu zweryfikowania składni.
- Zestaw narzędzi do testowania szablonów usługi ARM sprawdza, czy szablon jest zgodny z zalecanymi rozwiązaniami.
- Bicep linter sprawdza pliki Bicep pod kątem błędów składni i naruszeń najlepszych rozwiązań.
Rozważ uwzględnienie testów jednostkowych w procesie kompilacji aplikacji. Przejrzyj zadania dostępne dla usługi Azure DevOps Pipeline.
Użyj połączeń usługi Azure DevOps lub wpisów tajnych usługi GitHub, aby zarządzać połączeniami z platformą Azure. Każde połączenie powinno mieć prawidłowy dostęp uprzywilejowany do zasobów platformy Azure.
Rozważ użycie wpisów tajnych usługi Azure Key Vault do przechowywania poufnych informacji, takich jak hasła, klucze interfejsu API, certyfikaty.
Agenci usługi Azure DevOps mogą być hostowani samodzielnie lub hostowani przez firmę Microsoft.
- Konserwacja i uaktualnienia są obsługiwane w przypadku korzystania z agentów hostowanych przez firmę Microsoft. Za każdym razem, gdy zadanie kompilacji jest uruchamiane, tworzona jest nowa maszyna wirtualna.
- Możesz samodzielnie skonfigurować własnych agentów hostowanych i zarządzać nimi w celu uruchamiania zadań kompilacji.
Zalecenia dotyczące projektowania
Użyj ciągłej integracji, aby zautomatyzować kompilacje i testowanie kodu za każdym razem, gdy członek zespołu zatwierdza zmiany w kontroli wersji.
Uwzględnij testy jednostkowe dla kodu IaC i aplikacji w ramach procesu kompilacji.
Jeśli to możliwe, użyj puli hostowanej przez firmę Microsoft, a nie pul hostowanych samodzielnie, ponieważ oferują one izolację i czystą maszynę wirtualną dla każdego uruchomienia potoku.
Podczas łączenia usługi Azure DevOps lub GitHub z platformą Azure za pośrednictwem połączeń usług lub wpisów tajnych usługi GitHub upewnij się, że zawsze definiujesz zakres, aby mógł uzyskiwać dostęp tylko do wymaganych zasobów.
Użyj wpisów tajnych usługi Key Vault, aby uniknąć kodowania poufnych informacji, takich jak poświadczenia (hasła użytkownika maszyny wirtualnej), certyfikaty lub klucze. Następnie użyj wpisów tajnych jako zmiennych w zadaniach kompilacji i wydania.
Strategia wdrażania
Uwagi dotyczące projektowania
Rozważ użycie ciągłego dostarczania (CD). Ciągłe wdrażanie obejmuje kompilowanie, testowanie, konfigurowanie i wdrażanie z kompilacji do środowiska.
Rozważ użycie środowisk. Środowiska umożliwiają kierowanie kolekcji zasobów z zadania dostarczania. Przykłady typowych nazw środowisk to:
- Deweloper
- Test
- Pytania i odpowiedzi
- Przygotowanie
- Produkcyjne
Rozważ użycie IaC w ramach strategii w celu zweryfikowania i potwierdzenia wdrożenia zmian.
Zalecenia dotyczące projektowania
Użyj ciągłego wdrażania, aby upewnić się, że kod jest zawsze gotowy do wdrożenia, automatycznie kompilując, testując i wdrażając kod w środowiskach przypominających środowisko produkcyjne. Dodaj ciągłe dostarczanie, aby utworzyć pełną integrację ciągłej integracji/ciągłego wdrażania, która pomaga wykrywać wady kodu tak szybko, jak to możliwe, i zapewnia szybkie wydawanie prawidłowo przetestowanych aktualizacji.
Użyj środowisk w ramach strategii wdrażania. Środowiska zapewniają korzyści, takie jak:
- Historia wdrożenia
- Możliwość śledzenia zatwierdzeń i elementów roboczych
- Kondycja zasobu diagnostycznego
- Zabezpieczenia
Uwzględnij kontrole wdrażania wstępnego IaC, aby wyświetlić podgląd zmian i wyświetlić szczegółowe informacje na temat tego, czy zasób został utworzony, zmodyfikowany lub usunięty.
Strategia wycofywania
Uwagi dotyczące projektowania
Rozważ utworzenie planu wycofania. Wycofywanie wdrożenia polega na przywróceniu wdrożenia do znanego dobrego stanu i zapewnia kluczową możliwość odzyskania po nieudanym wdrożeniu.
Rozważ użycie zmian cofania w usłudze Git, jeśli musisz przywrócić zmiany w zatwierdzeniu, odrzucić zmiany lub zresetować gałąź do poprzedniego stanu.
Zalecenia dotyczące projektowania
- Zastosować zmiany cofania w usłudze Git, gdy trzeba przywrócić zmiany w zatwierdzonych plikach, odrzucić niezatwierdzone zmiany lub zresetować gałąź do poprzedniego stanu.