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