Integrowanie potoków ciągłej integracji/ciągłego wdrażania w usłudze DevTest Labs i DevOps
DevOps to metodologia tworzenia oprogramowania, która integruje programowanie oprogramowania (Dev) z operacjami systemowymi (Ops). System dostarcza nowe funkcje oprogramowania, aktualizacje i poprawki zgodne z celami biznesowymi.
Metodologia metodyki DevOps obejmuje również:
- Projektowanie nowych funkcji na podstawie celów, wzorców użycia i opinii klientów.
- Naprawianie, odzyskiwanie i wzmacnianie systemu w przypadku wystąpienia problemów.
Jednym ze składników metodologii DevOps jest potok ciągłej integracji i ciągłego dostarczania (CD). Potok ciągłej integracji/ciągłego wdrażania przenosi informacje, kod i zasoby z zatwierdzenia kontroli źródła za pomocą serii kroków w celu utworzenia systemu. Kroki obejmują kompilację, testowanie i wydanie.
Można użyć Azure DevTest Labs w potokach ciągłej integracji/ciągłego wdrażania. W tym artykule omówiono używanie usługi DevTest Labs w potokach kompilacji i wydania ciągłej integracji/ciągłego wdrażania w środowisku przedsiębiorstwa.
Zalety usługi DevTest Labs w przepływach pracy devops
Laboratorium powinno skupić się na zespole pracującym w obszarze funkcji. Ten wspólny fokus umożliwia szybsze zmiany, ograniczając wszelkie negatywne skutki do mniejszej grupy. Zmiany lub problemy występują w środowisku laboratoryjnym bez wpływu na inne elementy.
Wspólne skupienie się na udostępnianiu zasobów specyficznych dla obszaru, takich jak narzędzia, skrypty i szablony usługi Azure Resource Manager (ARM). Deweloperzy mogą używać udostępnionych zasobów do tworzenia maszyn wirtualnych ze wszystkimi potrzebnymi kodami, narzędziami i konfiguracją. Szablony usługi ARM tworzą maszyny wirtualne laboratorium i środowiska laboratoryjne z odpowiednimi zasobami platformy Azure. Szablony tworzą zasoby dynamicznie lub tworząc obrazy podstawowe z dostosowaniami.
Rozważmy na przykład scenariusz, w którym produkt jest autonomicznym systemem instalowanym na maszynie klienta. Usługa DevTest Labs może tworzyć maszyny wirtualne laboratorium, które mają zainstalowane oprogramowanie klienta, artefakty i konfiguracje, na potrzeby szybkiego testowania kodu pętli wewnętrznej.
Poniżej przedstawiono niektóre korzyści wynikające z używania laboratoriów w przepływach pracy metodyki DevOps:
Ukierunkowany dostęp: Korzystanie z laboratorium jako składnika kojarzy określony ekosystem z ograniczonymi osobami. Zazwyczaj do zespołu lub grupy działającej w obszarze wspólnym lub określonej funkcji przypisano do nich laboratorium.
Replikacja infrastruktury w chmurze: Deweloper może szybko skonfigurować ekosystem deweloperów, który zawiera maszynę wirtualną dewelopera z kodem źródłowym i narzędziami. Deweloper może również utworzyć środowisko, które jest niemal identyczne z konfiguracją produkcyjną, w celu szybszego opracowywania pętli wewnętrznej.
Środowiska przedprodukcyjne: Laboratorium w potoku ciągłej integracji/ciągłego wdrażania może jednocześnie uruchamiać kilka różnych środowisk przedprodukcyjnych lub maszyn na potrzeby testowania asynchronicznego. W laboratorium można wdrażać różne infrastruktury pomocy technicznej i tworzyć agentów oraz zarządzać nimi.
Korzystanie z laboratoriów w potokach ciągłej integracji/ciągłego wdrażania
Potok ciągłej integracji/ciągłego wdrażania jest krytycznym składnikiem DevOps. Potok integruje kod z żądania ściągnięcia dewelopera z istniejącym kodem i wdraża kod w ekosystemie produkcyjnym. W przypadku integracji z usługą DevTest Labs nie wszystkie zasoby muszą znajdować się w laboratorium. Można na przykład skonfigurować hosta serwera Jenkins poza laboratorium, aby uzyskać bardziej trwały zasób. Oto kilka konkretnych przykładów integracji laboratoriów z potokiem ciągłej integracji/ciągłego wdrażania.
Kompilacja
Potok kompilacji tworzy pakiet składników do testowania i przekazywania do wydania. Dynamicznie kompilowanie infrastruktury umożliwia większą kontrolę. Laboratoria mogą być częścią potoku kompilacji jako lokalizacje dla agentów kompilacji i innych zasobów pomocy technicznej. Usługa DevTest Labs może ograniczyć dostęp do laboratorium, co zwiększa bezpieczeństwo agentów kompilacji i zmniejsza możliwość przypadkowego uszkodzenia.
Mając możliwość posiadania wielu środowisk w laboratorium, każda kompilacja może być uruchamiana asynchronicznie. Identyfikator kompilacji jest częścią informacji o środowisku, które jednoznacznie identyfikują zasoby w określonej kompilacji.
Testowanie
Potok ciągłej integracji/ciągłego wdrażania może zautomatyzować tworzenie zasobów usługi DevTest Labs, takich jak maszyny wirtualne i środowiska na potrzeby zautomatyzowanego i ręcznego testowania. Potok używa artefaktów informacji o kompilacji lub formuł do tworzenia maszyn wirtualnych z różnymi niestandardowymi konfiguracjami testów.
Release
Proces wydania może użyć usługi DevTest Labs do weryfikacji przed wdrożeniem kodu. Proces jest podobny do testowania. Zasoby produkcyjne nie powinny być wdrażane w usłudze DevTest Labs.
Dostosowywanie
Usługa Azure Pipelines, składnik Azure DevOps Services, ma istniejące zadania do manipulowania maszynami wirtualnymi i środowiskami w określonych laboratoriach. Usługa Azure Pipelines to jeden ze sposobów zarządzania potokiem ciągłej integracji/ciągłego wdrażania. Laboratorium można zintegrować z dowolnym systemem obsługującym wywoływanie interfejsów API REST, wykonywanie skryptów programu PowerShell lub przy użyciu interfejsu wiersza polecenia platformy Azure.
Niektórzy menedżerowie potoków ciągłej integracji/ciągłego wdrażania mają istniejące wtyczki typu open source, które mogą zarządzać zasobami platformy Azure i usługi DevTest Labs. Może być konieczne użycie niestandardowego skryptu w celu dopasowania do potrzeb potoku. Podczas wykonywania zadania użyj jednostki usługi z odpowiednią rolą, zwykle Współautor, aby uzyskać dostęp do laboratorium.