Udostępnij za pośrednictwem


Zalecenia dotyczące korzystania z ciągłej integracji

Dotyczy tego zalecenia z listy kontrolnej dotyczącej doskonałości operacyjnej platformy Azure Well-Architected Framework:

OE:04 Zoptymalizuj procesy tworzenia oprogramowania i zapewniania jakości, postępując zgodnie ze sprawdzonymi w branży rozwiązaniami dotyczącymi programowania i testowania. Aby uzyskać jasne oznaczenie roli, standaryzację praktyk między składnikami, takimi jak narzędzia, kontrola źródła, wzorce projektowania aplikacji, dokumentacja i przewodniki dotyczące stylu.

Przewodnik pokrewny: Zwiększanie szybkości | kompilacji standaryzacji narzędzi i procesów

W miarę opracowywania, aktualizowania, a nawet usuwania kodu, posiadanie intuicyjnej i bezpiecznej metody integrowania tych zmian w głównej gałęzi kodu umożliwia deweloperom zapewnienie wartości.

Jako deweloper możesz wprowadzać niewielkie zmiany w kodzie, wypychać te zmiany do repozytorium kodu i uzyskiwać niemal natychmiastowe opinie na temat jakości, pokrycia testów i wprowadzonych usterek. Ten proces pozwala pracować szybciej i z większą pewnością i mniejszym ryzykiem.

Ciągła integracja (CI) to praktyka, w której systemy kontroli źródła i potoki wdrażania oprogramowania są zintegrowane w celu zapewnienia zautomatyzowanych mechanizmów kompilacji, testowania i przesyłania opinii dla zespołów programistycznych.

Kluczowe strategie projektowania

Ciągła integracja to praktyka tworzenia oprogramowania używana przez deweloperów do integrowania aktualizacji oprogramowania z systemem kontroli źródła w regularnym rytmie.

Proces ciągłej integracji rozpoczyna się, gdy inżynier tworzy żądanie ściągnięcia usługi GitHub w celu sygnalizowania systemowi ciągłej integracji, że zmiany kodu są gotowe do zintegrowania. W idealnym przypadku proces integracji weryfikuje kod względem kilku punktów odniesienia i testów. Następnie przekazuje opinię inżynierowi żądającego na temat stanu tych testów.

Jeśli testy bazowe i testowanie przebiegają dobrze, proces integracji tworzy zasoby i etapy, które będą wdrażać zaktualizowane oprogramowanie. Te zasoby obejmują skompilowany kod i obrazy kontenerów.

Ciągła integracja może pomóc szybciej dostarczać oprogramowanie wysokiej jakości, wykonując następujące czynności:

  • Uruchamianie testów automatycznych względem kodu w celu zapewnienia wczesnego wykrywania zmian powodujących niezgodność.
  • Uruchom analizę kodu, aby zapewnić standardy kodu, jakość i konfigurację.
  • Uruchom testy zgodności i zabezpieczeń, aby upewnić się, że oprogramowanie nie ma znanych luk w zabezpieczeniach.
  • Uruchom testy akceptacyjne lub funkcjonalne, aby upewnić się, że oprogramowanie działa zgodnie z oczekiwaniami.
  • Przekaż szybką opinię na temat wykrytych problemów.
  • W stosownych przypadkach należy utworzyć możliwe do wdrożenia zasoby lub pakiety zawierające zaktualizowany kod.

Automatyzowanie ciągłej integracji z potokami

Aby osiągnąć ciągłą integrację, użyj rozwiązań programowych do zarządzania, integrowania i automatyzowania procesu. Typowym rozwiązaniem jest użycie potoku ciągłej integracji.

Potok ciągłej integracji obejmuje oprogramowanie (często hostowane w chmurze), które zapewnia:

  • Platforma do uruchamiania testów automatycznych.
  • Skanowanie pod kątem zgodności.
  • Reporting.
  • Wszystkie inne składniki tworzące proces ciągłej integracji.

W większości przypadków oprogramowanie potoku jest dołączone do kontroli źródła, tak aby po utworzeniu żądań ściągnięcia lub scalaniu oprogramowania z określoną gałęzią potok ciągłej integracji jest uruchamiany. Integracja kontroli źródła zapewnia również możliwość przekazywania opinii ci bezpośrednio na żądania ściągnięcia.

Wiele rozwiązań, takich jak Azure Pipelines lub GitHub Actions, zapewnia możliwości potoków ciągłej integracji.

Integrowanie potoków z kontrolą źródła

Integracja potoku ciągłej integracji z systemem kontroli źródła jest kluczem do umożliwienia szybkiego współtworzenia kodu samoobsługowego.

Potok ciągłej integracji jest uruchamiany w nowo utworzonym żądaniu ściągnięcia. Potok obejmuje wszystkie testy, oceny zabezpieczeń i inne kontrole. Wyniki testu ciągłej integracji są wyświetlane bezpośrednio w żądaniu ściągnięcia, aby zapewnić niemal w czasie rzeczywistym opinie na temat jakości.

Inną popularną praktyką jest tworzenie małych raportów lub znaczków, które można przedstawić w kontroli źródła, aby uwidocznić bieżące stany kompilacji.

Na poniższej ilustracji przedstawiono integrację między usługą GitHub i potokiem usługi Azure DevOps. W tym przykładzie tworzenie żądania ściągnięcia wyzwala potok usługi Azure DevOps. Stan potoku jest wyświetlany w żądaniu ściągnięcia.

Zrzut ekranu przedstawiający wskaźnik stanu usługi Azure DevOps w repozytorium GitHub.

Dołączanie testów automatycznych

Kluczowym elementem ciągłej integracji jest ciągłe tworzenie i testowanie kodu, ponieważ deweloperzy tworzą wkład w kod. Testowanie żądań ściągnięcia podczas ich tworzenia daje szybką opinię, że zatwierdzenie nie wprowadziło zmian powodujących niezgodność. Zaletą jest to, że testy w potoku ciągłej integracji mogą być tymi samymi testami, które są uruchamiane podczas programowania opartego na testach.

Poniższy fragment kodu przedstawia krok testu z potoku usługi Azure DevOps. Krok ma dwa zadania:

  • Pierwsze zadanie używa popularnej platformy testowania języka Python do uruchamiania testów ciągłej integracji. Te testy znajdują się w kontroli źródła wraz z kodem języka Python. Wyniki testu przechodzą do pliku o nazwie test-results.xml.
  • Drugie zadanie zużywa wyniki testu i publikuje je w potoku usługi Azure DevOps jako zintegrowany raport.
- script: |
    pip3 install pytest
    pytest azure-vote/azure-vote/tests/ --junitxml=junit/test-results.xml
    continueOnError: true

- task: PublishTestResults@2
    displayName: 'Publish Test Results'
    inputs:
    testResultsFormat: 'JUnit'
    testResultsFiles: '**/test-results.xml'
    failTaskOnFailedTests: true
    testRunTitle: 'Python $(python.version)'

Na poniższej ilustracji przedstawiono wyniki testów wyświetlane w portalu usługi Azure DevOps.

Zrzut ekranu przedstawiający testy potoku usługi Azure DevOps w portalu usługi Azure DevOps.

Testy zakończone niepowodzeniem

Testy nieudane powinny tymczasowo blokować wdrożenie i prowadzić do dokładniejszej analizy tego, co się stało. Testy nieudane powinny również prowadzić do uściślenia testów lub poprawy zmiany, która spowodowała niepowodzenie testów.

Stan publikowania kompilacji

Wielu deweloperów pokazuje, że jakość kodu jest wysoka, wyświetlając wskaźnik stanu w repozytorium. Na poniższej ilustracji przedstawiono wskaźnik usługi Azure Pipelines wyświetlany w pliku readme projektu open source w usłudze GitHub.

Zrzut ekranu przedstawiający wskaźnik usługi Azure Pipelines w pliku readme w usłudze GitHub.

Ułatwienia platformy Azure

Azure DevOps to zbiór usług, które ułatwiają tworzenie wspólnej, wydajnej i spójnej praktyki programistycznej.

Usługa Azure Pipelines udostępnia usługi kompilowania i wydawania w celu obsługi ciągłej integracji i ciągłego dostarczania (CI/CD) aplikacji.

Usługa GitHub for Actions dla platformy Azure umożliwia automatyzację procesów ciągłej integracji/ciągłego wdrażania. Integruje się bezpośrednio z platformą Azure, aby uprościć wdrożenia. Możesz tworzyć przepływy pracy, które kompilują i testują każde żądanie ściągnięcia w repozytorium lub wdrażają scalone żądania ściągnięcia do środowiska produkcyjnego.

Dowiedz się, jak utworzyć potok ciągłej integracji przy użyciu usługi GitHub lub Usługi Azure DevOps:

Dowiedz się, jak wyświetlać znaczki w repozytoriach:

Lista kontrolna doskonałości operacyjnej