~~NOCACHE~~ ~~SLIDESHOW~~ ====== Azure DevOps ====== ===== Application Lifecycle Management (ALM) ===== ALM (zarządzanie cyklem życia aplikacji) to proces zarządzania produktem od pomysłu aż po jego wycofanie z użycia - zdefiniowanie wymagań i projekt aplikacji - rozwój aplikacji (Dev) * implementacja i budowanie aplikacji * testy, weryfikacja poprawności działania i naprawa błędów - utrzymanie produktu (Ops) * wdrażanie kolejnych wersji produktu * konfiguracja i monitorowanie działania aplikacji * naprawa błędów **Azure DevOps** - wszystko w jednym miejscu ===== Metodyka DevOps ===== {{zajecia:znd_2020_1:devops-loop-800x380.png?600}} ===== DevOps - założenia ===== * DevOps = „development” (programowanie) + „operations” (operacje) * koordynacja i współpraca zespołów w celu tworzenia lepszych, bardziej niezawodnych produktów * silny nacisk na automatyzację i monitoring wszystkich etapów wytwórczych * przyspieszenie cyklu powstawania nowych wydań * możliwość lepszego reagowania na potrzeby klientów * bezpieczeństwo uwzględniane na każdym etapie (DevSecOps, zob. dalej) ===== Azure DevOps - przegląd ===== {{zajecia:znd_2020_1:azure_devops.png?800}} ===== Azure DevOps - usługi ===== * **Azure Boards** - planowanie i śledzenie pracy: backlogi, tablice Kanban, sprinty, zadania (work items) * **Azure Repos** - prywatne repozytoria Git (oraz TFVC), pull requesty, polityki gałęzi * **Azure Pipelines** - CI/CD dla dowolnego języka i platformy, kontenery Docker i Kubernetes, wdrożenia do Azure, AWS, Google Cloud i środowisk lokalnych * **Azure Test Plans** - testy manualne, eksploracyjne i integracja z testami automatycznymi * **Azure Artifacts** - pakiety NuGet, npm, Maven, Python i Universal * pulpity (Dashboards), wiki projektu, powiadomienia, Analytics i raporty Power BI ===== Azure DevOps - kluczowe możliwości ===== * **continuous integration** i **continuous delivery** (ciągła integracja i dostarczanie) - automatyzacja procesu wytwórczego: \\ synchronizacja kodu, budowanie aplikacji, testy (kodu, aplikacji), środowisko uruchomieniowe, raporty, powiadomienia, deployment, hostowanie aplikacji, ... * **zwinne metodyki zarządzania** \\ m.in. Scrum i Kanban, zarządzanie zgłoszeniami (Work item), przydział zadań, powiązanie z kodem, testami, raportami * repozytorium kodu, system kontroli wersji \\ Git (domyślny wybór dla nowych projektów) oraz Team Foundation Version Control (TFVC) * rozbudowany system raportów i pulpitów (Dashboards, Analytics, Power BI), analiza postępów prac, powiązania między wymaganiami, kodem, testami i wdrożeniami ===== Potok ciągłej integracji ===== {{zajecia:znd_2020_1:architecture-devops-dotnet-webapp.png?800}} ===== Azure DevOps wersje ===== * [[https://azure.microsoft.com/products/devops/server/|Azure DevOps Server]] - wersja instalowana lokalnie (on-premises) * wcześniej: Team Foundation Server (TFS), Visual Studio Team System; obecnie m.in. Azure DevOps Server 2022 * te same podstawowe usługi co w wersji chmurowej, ale wymaga własnej infrastruktury i utrzymania; dla organizacji, które muszą przechowywać dane u siebie * [[https://azure.microsoft.com/products/devops/|Azure DevOps Services]] - wersja chmurowa * dawniej: Visual Studio Team Services, Team Foundation Service, Visual Studio Online ===== Azure DevOps Services ===== * usługi DevOps hostowane przez Microsoft, gotowe do użycia bez własnej infrastruktury, z automatycznymi aktualizacjami i SLA 99,9% * uwierzytelnianie za pomocą Microsoft Entra ID (zalecane w organizacjach) lub konta Microsoft * darmowe dla zespołów do 5 użytkowników, 2 GB w Azure Artifacts, nieograniczona liczba użytkowników typu Stakeholder; dodatkowi użytkownicy są płatni * Azure Pipelines (projekty prywatne): 1 bezpłatne zadanie na agencie Microsoft-hosted (do 60 minut na uruchomienie, 1800 minut miesięcznie; wymaga powiązania organizacji z subskrypcją Azure) oraz 1 bezpłatne zadanie na własnym agencie (self-hosted) bez limitu czasu * nieograniczona liczba prywatnych repozytoriów Git * skalowalne agenty buildów hostowane przez Microsoft (Microsoft-hosted) lub własne (self-hosted) * projekty publiczne zostały wycofane: nie można tworzyć nowych, a istniejące zostaną zamienione na prywatne od 2027 r. * częste aktualizacje ===== Dostęp ===== * portal webowy (Web Portal) * Visual Studio * Excel - import i masowa edycja zadań * Visual Studio Code, IntelliJ, Android Studio, Eclipse i Xcode - integracja z repozytoriami Git * dowolny klient Git (Azure DevOps używa standardowego Git) * asystenci AI w środowisku programistycznym (np. GitHub Copilot) z dostępem do danych Azure DevOps przez MCP Server (zob. dalej) * łatwa integracja z innymi narzędziami: REST API, service hooks, rozszerzenia z Marketplace, integracja z GitHub ===== Integracja z innymi narzędziami ===== {{zajecia:znd_2020_1:azure-devops-supports-integration-with-many-third-party-services.png.jpeg?800}} [[https://marketplace.visualstudio.com/azuredevops|Extensions Marketplace]] - rozszerzenia dla Azure DevOps ===== Autoryzacja ===== * **Azure DevOps Services** \\ uwierzytelnianie za pomocą Microsoft Entra ID lub konta Microsoft \\ https://dev.azure.com/ * dostęp do wybranej organizacji \\ https://dev.azure.com/nazwa_organizacji/ * dostęp do projektu \\ https://dev.azure.com/nazwa_organizacji/nazwa_projektu/ * poprzednia domena (nadal aktualna) \\ https://nazwa_organizacji.visualstudio.com/ ===== Web Portal i Visual Studio ===== ^ Web Portal ^ Visual Studio ^ | Planowanie prac: \\ //backlog produktu i sprintów, Task boards, Capacity planning, Kanban board, Dashboards, Widgets, Charts// \\ Zbieranie opinii (feedback) \\ Zarządzanie testami \\ Pipelines, Artifacts \\ Wiki \\ Security overview \\ Administracja kontami, projektami, zespołami | Integracja obsługi zadań ze zmianami kodu, Git: \\ //Changes, Branches, Pull Requests, Sync, Work Items, Builds// \\ Integracja z GitHub Copilot i MCP Server (Visual Studio 2022 i nowsze) | ===== Połączenie z Visual Studio ===== **Team Explorer** -> **Manage Connections** -> **Connect to a Project** //Zrzuty ekranu pochodzą z Visual Studio 2019; w nowszych wersjach układ okien może się różnić.// |{{:zajecia:znd_2020_1:te-connect-page-connect-to-project-vs2019.png?350}}|{{:zajecia:znd_2020_1:connect-to-a-project-and-github.png?350}}| ===== Team Explorer ===== * Zadania (jednostki robocze/Work Items) * Repozytorium (Source Control) * Buildy * Oczekujące na zatwierdzenie zmiany (Pending changes) {{zajecia:znd_2014_1:tfs_team_explorer1.png?350}} ===== Web Portal ===== {{zajecia:znd_2020_1:list-projects.png?600}} Strona główna z listą organizacji i projektów ===== Web Portal - konfiguracja ===== {{zajecia:znd_2020_1:list-projects-org-settings.png?600}} Strona główna ustawień organizacji i projektów ===== Azure Pipelines - przykład potoku YAML ===== * potok jest zapisany jako kod w pliku ''azure-pipelines.yml'' w repozytorium * każdy commit do gałęzi ''main'' uruchamia budowanie i testy trigger: - main pool: vmImage: ubuntu-latest steps: - task: UseDotNet@2 inputs: version: 8.x - script: dotnet build --configuration Release displayName: Build - script: dotnet test --configuration Release displayName: Test ===== Nowości: DevSecOps ===== * **DevSecOps** - uwzględnianie bezpieczeństwa na każdym etapie wytwarzania: kontrole działają automatycznie w repozytorium i w potoku CI/CD, a nie dopiero przed wdrożeniem * w Azure DevOps: **GitHub Advanced Security for Azure DevOps** - dostępne tylko w Azure DevOps Services i dla repozytoriów Git w Azure Repos * funkcja płatna, rozliczana według liczby aktywnych autorów zmian (active committers); włączenie wymaga skonfigurowania rozliczeń * dwa warianty: pakiet **Advanced Security** albo osobne produkty **Secret Protection** i **Code Security** ===== DevSecOps - funkcje skanowania ===== * **Secret scanning - push protection**: blokuje wypchnięcie commitów ujawniających sekrety, np. hasła i klucze * **Secret scanning - repo scanning**: wykrywa sekrety zapisane w repozytorium, także w historii commitów * **Dependency scanning**: wyszukuje znane podatności w zależnościach open source (bezpośrednich i przechodnich) * **Code scanning (CodeQL)**: analiza statyczna kodu wykrywająca m.in. SQL injection i obejście uwierzytelniania * wyniki dostępne na karcie **Advanced Security** w repozytorium ===== DevSecOps - włączanie i konfiguracja ===== * włączanie na poziomie organizacji, projektu lub pojedynczego repozytorium (**Project settings** -> **Repos**) * push protection i skanowanie repozytorium działają od razu po włączeniu; push protection sprawdza tylko pushe wykonane po włączeniu * dependency scanning i code scanning działają w ramach potoków Azure Pipelines, a wyniki są zbierane per repozytorium * code scanning, ustawienia domyślne (default setup): skanowanie według harmonogramu tygodniowego dla C#, C/C++, Java, JavaScript/TypeScript, Python, Ruby i Rust * code scanning, ustawienia zaawansowane (advanced setup): zadania CodeQL dodane do potoku, np. dla Go i Swift lub niestandardowych kroków budowania ===== DevSecOps - ochrona pull requestów ===== * adnotacje w pull requestach dla dependency scanning i code scanning, gdy polityka **Build validation** obejmuje zadania skanowania * **status checks** jako polityki gałęzi blokujące scalanie: * ''AdvancedSecurity/AllHighAndCritical'' - wszystkie alerty krytyczne i wysokie muszą zostać naprawione * ''AdvancedSecurity/NewHighAndCritical'' - blokuje wprowadzanie nowych podatności * przepływ: commit -> pull request -> build validation ze skanowaniem -> status check -> scalenie ===== DevSecOps - przegląd bezpieczeństwa i Copilot Autofix ===== * **Security overview** (Organization settings): karty **Risk**, **Coverage** i **Alerts**, filtrowanie, eksport do CSV oraz widoki do koordynacji napraw (security campaigns) * **Copilot Autofix** (wersja zapoznawcza, public preview): agentowa naprawa alertów code scanning i dependency scanning * agent przygotowuje pull request z proponowaną poprawką, którą należy przejrzeć, przetestować i scalić * nie obejmuje alertów o sekretach ani malware; generowanie poprawek zużywa kredyty AI ===== Nowości: agenty AI i MCP Server ===== * **Model Context Protocol (MCP)** - standard łączący asystentów AI z zewnętrznymi danymi i narzędziami * **Azure DevOps MCP Server** daje asystentowi AI dostęp do rzeczywistych danych organizacji: projekty i zespoły, zadania (work items), pull requesty, buildy i potoki, plany testów * zapytania w języku naturalnym zamiast ręcznego przeglądania portalu, np. o stan sprintu, zablokowane zadania lub pull requesty czekające na przegląd * asystent AI musi działać w trybie agenta (agent mode) * MCP Server jest bezpłatny, ale obowiązują standardowe koszty Azure DevOps; korzystanie z asystenta AI może być osobno płatne ===== MCP Server - warianty i bezpieczeństwo ===== * **zdalny (remote)** - zalecany: hostowany przez Azure DevOps, bez instalacji; obsługiwany m.in. w VS Code z GitHub Copilot, Visual Studio, Microsoft Foundry, Copilot Studio i GitHub Copilot CLI * uwierzytelnianie przez Microsoft Entra; organizacja musi być oparta na Microsoft Entra (organizacje z samym kontem Microsoft nie są obsługiwane) * **lokalny (local)** - uruchamiany na własnym komputerze (Node.js 20+), przeznaczony dla klientów niewspierających zdalnego serwera, np. Claude Desktop, Claude Code, Cursor i Codex * użytkownik kontroluje, do jakich danych ma dostęp asystent AI ===== Przykładowe zapytania do asystenta AI ===== ^ Zadanie ^ Przykładowe zapytanie ^ | Przegląd projektu | Podsumuj stan bieżącego sprintu w projekcie Contoso: otwarte zadania, aktywne pull requesty i ostatnie buildy | | Zablokowane zadania | Wyświetl zadania w projekcie Contoso, które są zablokowane lub mają przeszkody | | Kondycja potoków | Pokaż odsetek udanych uruchomień wszystkich potoków w projekcie Contoso z ostatnich 2 tygodni | | Nieaktualne pull requesty | Wymień otwarte pull requesty w projekcie Contoso bez aktywności od ponad 5 dni | | Śledzenie powiązań | Dla user story 1234 pokaż powiązane commity, pull requesty, buildy i wyniki testów | | Nieprzetestowane funkcje | Pokaż ukończone funkcje w projekcie Contoso bez powiązanych przypadków testowych | //Wskazówka: aby uniknąć korzystania z danych pobranych wcześniej, dodaj do zapytania polecenie „Nie używaj wcześniej pobranych danych”.// ===== Dobre praktyki przy użyciu AI ===== * wyniki asystenta AI to propozycje: weryfikuj podsumowania, a zmiany w kodzie kieruj przez pull request i przegląd kodu * nadawaj asystentowi tylko niezbędne uprawnienia i nie przekazuj mu sekretów * łącz AI z DevSecOps: skanowanie, polityki gałęzi i status checks chronią przed błędami także w kodzie generowanym automatycznie ===== Podsumowanie ===== * Azure DevOps obejmuje cały cykl: **Plan -> Code -> Build -> Test -> Deploy -> Monitor -> Repeat** * Boards, Repos, Pipelines, Test Plans i Artifacts działają razem i są powiązane śledzalnymi łączami * **DevSecOps**: bezpieczeństwo sprawdzane automatycznie w pull requestach i potokach * **AI**: MCP Server i Copilot Autofix wspierają zarządzanie projektem i naprawę podatności, ale decyzję podejmuje człowiek ===== Więcej informacji ===== * [[https://www.perforce.com/blog/alm/what-application-lifecycle-management|What Is Application Lifecycle Management?]] * [[https://software.af.mil/training/devops/|DevOps]] * [[https://learn.microsoft.com/en-us/azure/devops/|Azure DevOps documentation]] * [[https://learn.microsoft.com/en-us/azure/devops/user-guide/what-is-azure-devops|What is Azure DevOps?]] * [[https://learn.microsoft.com/en-us/azure/devops/mcp-server/mcp-server-overview|Azure DevOps MCP Server]]