~~NOCACHE~~ ~~SLIDESHOW~~ ====== Azure Artifacts ====== Tworzenie, przechowywanie i udostępnianie pakietów ===== Czym jest Azure Artifacts? ===== * zarządzanie pakietami i zależnościami projektów * pozwala publikować, przechowywać i pobierać pakiety w jednym miejscu * umożliwia współdzielenie kodu i innych plików między zespołami * obsługuje różne formaty pakietów i standardowe narzędzia programistyczne * integruje się z potokami **Azure Pipelines** * każda organizacja otrzymuje **2 GiB** bezpłatnej przestrzeni Azure Artifacts, większe wykorzystanie może wymagać konfiguracji rozliczeń ===== Pakiety i zależności ===== * **pakiet** - wersjonowana jednostka udostępniania, np. biblioteka używana przez aplikację * **zależność** - pakiet potrzebny do zbudowania lub uruchomienia projektu * menedżer pakietów pobiera wymagane wersje i pomaga zarządzać zależnościami * wspólne repozytorium pakietów ułatwia ponowne używanie bibliotek w wielu projektach * wersjonowanie pomaga rozróżniać wydania i odtwarzać środowisko projektu ===== Obsługiwane formaty ===== * **NuGet** - biblioteki dla .NET * **npm** - pakiety JavaScript i Node.js * **Maven** - biblioteki dla projektów Java * **Python** - pakiety dla projektów Python * **Cargo** - pakiety dla projektów Rust * **Universal Packages** - wersjonowane zestawy dowolnych plików //Dostępność formatów może zależeć od wersji Azure DevOps// ===== Kanał pakietów - feed ===== * **feed** - repozytorium służące do przechowywania i udostępniania pakietów * jeden feed może zawierać pakiety różnych obsługiwanych formatów * feed może mieć zakres projektu lub organizacji * ustawienia określają dostęp użytkowników, widoków i potoków * można do niego publikować własne pakiety oraz skonfigurować źródła zewnętrzne ===== Typowy przebieg pracy ===== - utworzenie feedu i nadanie odpowiednich uprawnień - przygotowanie oraz opublikowanie wersji pakietu - skonfigurowanie projektu lub potoku do korzystania z feedu - pobranie pakietu jako zależności aplikacji - budowanie i testowanie aplikacji korzystającej z pakietu - publikacja kolejnych wersji i zarządzanie ich dostępnością ===== Przykład: wspólna biblioteka ===== * zespół tworzy bibliotekę .NET używaną przez kilka aplikacji * biblioteka jest publikowana jako pakiet **NuGet** do feedu organizacji * projekty otrzymujące dostęp konfigurują feed jako źródło pakietów * każda aplikacja wskazuje potrzebną wersję biblioteki * po zmianach zespół publikuje nową wersję, którą aplikacje mogą przyjąć i przetestować ===== Źródła zewnętrzne - upstream sources ===== * feed może udostępniać pakiety z publicznych rejestrów, np. **nuget.org**, **npmjs.com** lub **Maven Central** * umożliwia korzystanie z pakietów własnych i zewnętrznych przez jeden feed * po zainstalowaniu pakietu ze źródła zewnętrznego jego kopia jest zapisywana w feedzie * zapis wymaga roli **Feed and Upstream Reader (Collaborator)** lub wyższej * zachowana kopia pomaga korzystać z pakietu, gdy źródło jest tymczasowo niedostępne ===== Wersje i widoki feedu ===== * wersje pakietu pozwalają odbiorcom wybierać odpowiednie wydanie * opublikowanej wersji nie można nadpisać inną zawartością; zmiana wymaga nowej wersji * **widoki (views)** udostępniają wybrane pakiety z feedu * domyślne widoki to **@Local**, **@Prerelease** i **@Release** * wersję pakietu można promować do widoku, np. po jej przetestowaniu * promowania nie można cofnąć przez przeniesienie pakietu z powrotem do poprzedniego widoku ===== Universal Packages ===== * przechowują wersjonowane zestawy plików, także inne niż typowe biblioteki * mogą zawierać np. narzędzia, pliki binarne lub zasoby potrzebne projektowi * pozwalają udostępniać pliki bez umieszczania ich bezpośrednio w repozytorium Git * pakiety można publikować i pobierać w ramach procesu wytwórczego ===== Integracja z Azure Pipelines ===== * potok może pobierać zależności z feedu podczas budowania aplikacji * może także przygotować i opublikować nową wersję pakietu * pakiety są dostępne w procesach budowania i wydawania * tożsamość potoku musi mieć odpowiednie uprawnienia do feedu * publikacja wymaga uprawnień wydawcy, a nie tylko odczytu ===== Uprawnienia i dostęp ===== * **Feed Reader** - przeglądanie i pobieranie pakietów * **Feed and Upstream Reader (Collaborator)** - dodatkowo zapisywanie pakietów ze źródeł zewnętrznych * **Feed Publisher (Contributor)** - dodatkowo publikowanie i promowanie pakietów * **Feed Owner** - zarządzanie feedem, jego ustawieniami i usuwaniem pakietów * dostęp należy nadawać zgodnie z potrzebami użytkowników i potoków * uprawnienia widoków także wymagają kontroli: dostęp do widoku może umożliwić pobieranie pakietów bez bezpośredniego dostępu do feedu ===== Dobre praktyki ===== * publikuj nowe wersje zamiast próbować zastępować istniejące * ograniczaj uprawnienia do publikacji i usuwania pakietów * kontroluj źródła zależności oraz kolejność skonfigurowanych źródeł zewnętrznych * testuj pakiety przed udostępnieniem ich szerszej grupie odbiorców * monitoruj wykorzystanie miejsca i przeglądaj niepotrzebne wersje ===== Podsumowanie ===== * Azure Artifacts pomaga przechowywać i współdzielić **wersjonowane pakiety** * feed może łączyć własne pakiety z zależnościami ze źródeł zewnętrznych * widoki i uprawnienia pomagają kontrolować udostępnianie pakietów * integracja z Azure Pipelines wspiera pobieranie i publikację pakietów w CI/CD ===== Źródło i dalsze informacje ===== * [[https://azure.microsoft.com/en-us/products/devops/artifacts/|Azure Artifacts - strona produktu Microsoft]] * [[https://learn.microsoft.com/en-us/azure/devops/artifacts/start-using-azure-artifacts|Dokumentacja Azure Artifacts]] * [[https://learn.microsoft.com/en-us/azure/devops/artifacts/concepts/upstream-sources|Źródła zewnętrzne - dokumentacja]]