Azure Pipelines

Writing /home/grochu/public_html/wiki/data/meta/zajecia/npr_2026_2/lab/azure_pipelines.meta failed
Unable to save metadata file. Hint: disk full; file permissions; safe_mode setting.
Writing /home/grochu/public_html/wiki/data/attic/zajecia/npr_2026_2/lab/azure_pipelines.1794563412.txt.gz failed
Writing /home/grochu/public_html/wiki/data/meta/zajecia/npr_2026_2/sidebar.meta failed

View page as slide show

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

  1. zmiana kodu w repozytorium
  2. uruchomienie potoku
  3. zbudowanie aplikacji i wykonanie testów
  4. przygotowanie wyników budowania do wdrożenia
  5. wdrożenie na środowisko testowe, a następnie produkcyjne
  6. 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