~~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]]