~~NOCACHE~~ ~~SLIDESHOW~~ ====== Azure Pipelines ====== Automatyzacja budowania, testowania i wdrażania aplikacji ===== Czym jest Azure Pipelines? ===== * usługa Azure DevOps do automatyzacji procesów **CI/CD** * buduje, testuje i wdraża aplikacje na różnych platformach * obsługuje aplikacje webowe, desktopowe i mobilne * umożliwia wdrożenia do chmury oraz środowisk lokalnych (on-premises) * potoki mogą korzystać z agentów hostowanych przez Microsoft lub utrzymywanych samodzielnie ===== CI i CD ===== * **CI - continuous integration (ciągła integracja)**: częste integrowanie zmian, automatyczne budowanie i testowanie kodu * **CD - continuous delivery (ciągłe dostarczanie)**: automatyczne przygotowanie i dostarczanie kolejnych wersji aplikacji * potok może wdrażać aplikację na kolejne środowiska, np. testowe i produkcyjne * automatyzacja pozwala szybciej wykrywać błędy i powtarzalnie wykonywać czynności ===== Typowy przebieg potoku ===== - zmiana kodu w repozytorium - uruchomienie potoku - zbudowanie aplikacji i wykonanie testów - przygotowanie wyników budowania do wdrożenia - wdrożenie na środowisko testowe, a następnie produkcyjne - sprawdzenie wyników, raportów i stanu wdrożenia //Etapy i sposób uruchamiania zależą od konfiguracji projektu.// ===== Elementy potoku ===== * **pipeline** - definicja zautomatyzowanego procesu * **stage** - etap procesu, np. budowanie lub wdrożenie * **job** - grupa kroków wykonywana przez agenta * **step** - pojedynczy krok, np. skrypt lub gotowe zadanie * **agent** - środowisko wykonujące zadania potoku * potok można zdefiniować w pliku **YAML** przechowywanym w repozytorium ===== Agenty i systemy operacyjne ===== * agenty hostowane przez Microsoft ograniczają potrzebę samodzielnego zarządzania maszynami * własne agenty (self-hosted) pozwalają utrzymywać środowisko wykonawcze we własnej infrastrukturze * dostępne są środowiska **Linux, macOS i Windows** * zadania i testy mogą działać równolegle, co przy odpowiednich zasobach skraca czas oczekiwania * dostępna równoległość i koszty zależą od wybranej oferty ===== Języki, platformy, kontenery ===== * budowanie, testowanie i wdrażanie aplikacji w wielu technologiach * przykłady: **Node.js, Python, Java, PHP, Ruby, C/C++ i .NET** * obsługa aplikacji **Android** i **iOS** * możliwość uruchamiania zadań na różnych systemach operacyjnych * budowanie obrazów kontenerów i publikowanie ich w rejestrach, np. **Docker Hub** i **Azure Container Registry** * wdrażanie kontenerów na pojedyncze hosty lub do **Kubernetes** ===== Wdrażanie aplikacji i integracja ===== * wdrożenia m.in. do **Azure, AWS i Google Cloud** oraz środowisk lokalnych * przykładowe cele: **Kubernetes, maszyny wirtualne, Azure Functions i Azure Web Apps** * możliwe wdrażanie wyników pochodzących z innych systemów CI, np. Jenkins * integracja z GitHub: umożliwia automatyczne uruchamianie potoków w odpowiedzi na zdarzenia w repozytorium GitHub * wtyczki rozszerzające, integracja raportowania z m.in. **Slack** i **SonarCloud** ===== Przykład potoku YAML ===== Plik ''azure-pipelines.yml'' dla repozytorium zawierającego projekt .NET w katalogu głównym: trigger: - main pool: vmImage: ubuntu-latest steps: - task: UseDotNet@2 inputs: version: 8.x - script: dotnet build --configuration Release displayName: Budowanie - script: dotnet test --configuration Release displayName: Testy ===== Jak działa przykład? ===== * zmiana w gałęzi ''main'' uruchamia potok * zadanie wykonywane jest na agencie Microsoft-hosted z systemem Ubuntu * krok ''UseDotNet@2'' udostępnia wskazaną wersję .NET SDK * kolejne kroki budują projekt i uruchamiają testy * przykład nie zawiera wdrożenia; można dodać je jako kolejny etap ===== Podsumowanie ===== * Azure Pipelines automatyzuje **budowanie, testowanie i wdrażanie** * obsługuje różne języki, systemy operacyjne, kontenery i środowiska chmurowe * etapy, warunki i zatwierdzenia pomagają kontrolować proces dostarczania * YAML, integracja z GitHub i rozszerzenia ułatwiają dopasowanie potoku do projektu ===== Źródło i dalsze informacje ===== * [[https://azure.microsoft.com/en-us/products/devops/pipelines/|Azure Pipelines - strona produktu Microsoft]] * [[https://learn.microsoft.com/en-us/azure/devops/pipelines/|Dokumentacja Azure Pipelines]]