Źródła nadrzędne usługi Azure Artifacts

Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019

Korzystając ze źródeł nadrzędnych, można wygodnie przechowywać pakiety z różnych źródeł w jednym kanale informacyjnym. Obejmuje to pakiety publikowane i używane z zewnętrznych źródeł danych i publicznych rejestrów, takich jak NuGet.org, npmjs.com, Maven Central i PyPI. Po włączeniu źródeł nadrzędnych wszystkie pakiety zainstalowane z tych nadrzędnych źródeł zostaną automatycznie zapisane w kanale informacyjnym.

Uwaga

Aby zapisać pakiety z nadrzędnych strumieni, musisz mieć rolę Kanał informacyjny i Nadrzędny czytelnik (współpracownik) lub wyższy. Aby uzyskać więcej informacji, zobacz Uprawnienia.

Zalety

Włączenie źródeł nadrzędnych oferuje kilka zalet zarządzania zależnościami produktu w ramach jednego kanału informacyjnego:

  • Prostota: po opublikowaniu wszystkich pakietów w jednym kanale informacyjnym pliki konfiguracji, takie jak NuGet.config, npmrc lub settings.xml. Wystarczy jedno źródło danych w pliku konfiguracji, aby zmniejszyć prawdopodobieństwo błędów i usterek, usprawniając konfigurację.

  • Determinizm: kanał informacyjny rozwiązuje żądania pakietów w kolejności, co zwiększa spójność podczas ponownego kompilowania kodu.

  • Pochodzenie: Kanał informacyjny zachowuje informacje o pakietach zapisanych ze źródeł nadrzędnych. Dzięki temu można sprawdzić, czy używasz oryginalnego pakietu, a nie kopii lub potencjalnie złośliwej wersji.

  • Spokój: każdy pakiet zainstalowany ze źródeł nadrzędnych jest automatycznie zapisywany w kanale informacyjnym. Oznacza to, że nawet jeśli źródło nadrzędne jest wyłączone, usunięte lub poddane konserwacji, możesz kontynuować opracowywanie i budowanie z pewnością, ponieważ masz kopię tego pakietu w kanale informacyjnym.

Najlepsze rozwiązania — konsumenci pakietów

Aby w pełni wykorzystać zalety nadrzędnych źródeł jako konsumenta pakietów, postępuj zgodnie z następującymi najlepszymi rozwiązaniami:

Użyj pojedynczego źródła danych w pliku konfiguracji:

Aby źródło danych zapewniało przywracanie deterministyczne, upewnij się, że plik konfiguracji, taki jak nuget.config lub .npmrc, odwołuje się tylko do jednego źródła danych z włączonymi źródłami nadrzędnymi. Zapoznaj się z poniższym przykładem:

<packageSources>
  <clear />
  <add key="FabrikamFiber" value="https://pkgs.dev.azure.com/fabrikam/_packaging/FabrikamFiber/nuget/v3/index.json" />
</packageSources>

Uwaga

NuGet kompiluje kilka plików konfiguracji, aby określić pełny zestaw opcji do zastosowania. Za pomocą programu <clear />można skutecznie ignorować wszystkie inne źródła pakietów określone w plikach konfiguracji wyższego poziomu.

registry=https://pkgs.dev.azure.com/fabrikam/_packaging/FabrikamFiber/npm/registry/
always-auth=true

Celowo porządkowaj źródła nadrzędne:

Jeśli używasz wyłącznie rejestrów publicznych, takich jak nuget.org lub npmjs.com, kolejność źródeł nadrzędnych nie ma znaczenia. Żądania do kanału informacyjnego są zgodne z sekwencją szczegółową w sekcji kolejność wyszukiwania.

Jednak w przypadku zarządzania wieloma źródłami, które mogą obejmować kombinację źródeł i rejestrów publicznych, każde źródło nadrzędne jest przeszukiwane w kolejności, w jakiej są wyświetlane w ustawieniach konfiguracji kanału informacyjnego. W takim przypadku zalecamy umieszczenie publicznych rejestrów najpierw na liście nadrzędnych źródeł.

W niektórych unikatowych scenariuszach niektóre organizacje wybierają dostosowywanie pakietów oprogramowania typu open source (OSS). Może to obejmować rozwiązanie problemów z zabezpieczeniami, zwiększenie funkcjonalności lub spełnienie określonych wymagań, które wymagają wewnętrznej odbudowy pakietu, a nie bezpośredniego uzyskania go z repozytorium publicznego. Jeśli Twoja organizacja stosuje tę praktykę, zaleca się umieszczenie nadrzędnego źródła zawierającego te zmodyfikowane pakiety systemu operacyjnego przed menedżerami pakietów publicznych. Takie rozwiązanie zapewnia użycie dostosowanych wersji organizacji.

Użyj sugerowanego widoku domyślnego:

Po dodaniu zdalnego kanału informacyjnego jako nadrzędnego źródła należy wybrać widok kanału informacyjnego. Dzięki temu źródła nadrzędne mogą tworzyć zestaw dostępnych pakietów. Aby uzyskać więcej informacji, zobacz How upstreams konstruowanie zestawu dostępnych pakietów .

Najlepsze rozwiązania: właściciele kanałów informacyjnych/wydawcy pakietów

Aby upewnić się, że źródło danych jest łatwo skonfigurowane jako nadrzędne źródło, rozważ zastosowanie następujących najlepszych rozwiązań:

Użyj widoku domyślnego:

Domyślnym widokiem dla wszystkich nowo utworzonych kanałów informacyjnych jest @Local widok zawierający wszystkie pakiety opublikowane w kanale informacyjnym lub zapisane ze źródeł nadrzędnych.

Jeśli chcesz użyć innych widoków, takich jak widok dla nowo wydanych wersji pakietów, możesz podwyższyć poziom pakietu do @Release widoku, a następnie udostępnić ten widok konsumentom pakietów.

Konstruowanie grafu pakietu:

Aby utworzyć graf pakietu, po prostu połącz się z domyślnym widokiem kanału informacyjnego i zainstaluj pakiet, który chcesz udostępnić. Po zapisaniu pakietu w widoku domyślnym użytkownicy, którzy chcą go używać, będą mogli rozpoznać graf pakietu i zainstalować żądany pakiet. Pakiety ze źródeł nadrzędnych są wyświetlane na podstawie skonfigurowanego widoku dla odpowiedniego nadrzędnego źródła.

Kolejność wyszukiwania

W przypadku menedżerów pakietów publicznych obsługujących wiele kanałów informacyjnych, takich jak NuGet i Maven, kolejność, w której zapytania dotyczące kanałów informacyjnych są czasami niejasne lub nieokreślone. Na przykład w rozwiązaniu NuGet zapytania równoległe są wysyłane do wszystkich źródeł danych w pliku konfiguracji, a odpowiedzi są przetwarzane w sposób pierwszy na wybiegu (FIFO).

Źródła nadrzędne odnoszą się do tego niedeterministycznego zachowania, wyszukując źródło danych i jego nadrzędne źródła w następującej kolejności:

  1. Pakiety opublikowane bezpośrednio do kanału informacyjnego.

  2. Pakiety, które zostały zapisane ze źródła nadrzędnego.

  3. Pakiety dostępne ze źródeł nadrzędnych. Każde źródło nadrzędne jest przeszukiwane w kolejności, w których znajduje się w konfiguracji kanału informacyjnego.

Aby w pełni skorzystać z funkcji szybkiego wyszukiwania, zalecamy dołączenie tylko jednego źródła danych do pliku konfiguracji.

Uwaga

Wyszukiwanie pakietów w źródłach nadrzędnych przy użyciu Eksploratora pakietów NuGet nie jest obsługiwane.

Zapisywanie pakietów ze źródeł nadrzędnych

Po włączeniu źródeł nadrzędnych dla kanału informacyjnego i zainstalowaniu pakietu ze źródła nadrzędnego automatyczna kopia tego pakietu zostanie zapisana w kanale informacyjnym. Ta praktyka zwiększa wydajność pobierania i oszczędza przepustowość sieci.

Na przykład pakiety można instalować bezpośrednio ze źródła nadrzędnego przy użyciu polecenia takiego jak npm install express. Alternatywnie pakiety mogą być instalowane w ramach procesu rozwiązywania zależności. W tym ostatnim scenariuszu instalowanie ekspresu spowoduje również zapisanie jego zależności, takich jak akceptowanie.

Uwaga

Niestandardowe źródła nadrzędne są obsługiwane tylko w przypadku pakietów npm.

Przesłanianie pakietów ze źródeł nadrzędnych

Podczas włączania źródeł nadrzędnych należy pamiętać, że publikowanie wersji pakietu, która już istnieje w źródle nadrzędnym, nie będzie możliwe. Jeśli na przykład włączysz nadrzędny NuGet.org, nie będzie można opublikować pakietu Newtonsoft.Json 10.0.3 , ponieważ ta dokładna wersja już istnieje w NuGet.org.

Jeśli musisz opublikować wersję pakietu, która jest już obecna w jednym z nadrzędnych źródeł, należy wykonać następujące kroki:

  1. Wyłącz odpowiednie źródło nadrzędne.
  2. Opublikuj pakiet.
  3. Ponownie włącz nadrzędne źródło.

Uwaga

Wersje pakietów są niezmienne. Zapisane pakiety pozostają w kanale informacyjnym, nawet jeśli źródło nadrzędne jest wyłączone lub usunięte.

Stan kondycji nadrzędnych źródeł

Jeśli źródło źródła danych kończy się niepowodzeniem, metadane pakietów tego samego protokołu nie mogą być już odświeżane. Aby sprawdzić stan kondycji nadrzędnych źródeł, wykonaj następujące kroki:

  1. Zaloguj się do organizacji usługi Azure DevOps, a następnie przejdź do projektu.

  2. Wybierz pozycję Artefakty, a następnie wybierz źródło danych z menu rozwijanego.

  3. Wybierz ikonę ikona koła zębatego koła zębatego, aby przejść do ustawień kanału informacyjnego, a następnie wybierz pozycję Źródła nadrzędne.

    Zrzut ekranu przedstawiający stan ostatniej synchronizacji źródeł nadrzędnych.

  4. Jeśli wystąpią jakiekolwiek błędy, zostanie wyświetlony komunikat ostrzegawczy. Kliknięcie stanu Niepowodzenie spowoduje podanie dodatkowych szczegółów, w tym przyczyny niepowodzenia i instrukcji dotyczących sposobu jego rozwiązania.

    Zrzut ekranu przedstawiający szczegóły niepowodzenia synchronizacji.

Uwaga

W przypadku rejestrów publicznych, takich jak NuGet.org, występuje 3–6-godzinne opóźnienie między czasem wypychania pakietu do rejestru publicznego i gdy stanie się ono dostępne do pobrania. To opóźnienie zależy od chronometrażu zadania i propagacji danych. Jednak gdy źródło nadrzędne jest źródłem danych usługi Azure Artifacts, opóźnienie zwykle trwa nie dłużej niż kilka minut.

Źródła nadrzędne w trybie offline

Źródła nadrzędne służą jako cenne zabezpieczenie dla konsumentów i infrastruktury, chroniąc je przed nieprzewidzianymi awariami. Podczas instalowania pakietu ze źródła nadrzędnego kopia tego pakietu jest zapisywana w kanale informacyjnym. Jeśli przestój w źródle nadrzędnym przechodzi konserwację lub staje się tymczasowo niedostępny, nadal możesz pobrać niezbędne pakiety ze źródła danych i kontynuować programowanie.

Często zadawane pytania

Pyt.: Nie mogę znaleźć mojego pakietu, mimo że widzę go w jednym z nadrzędnych kanałów informacyjnych?

1: Pakiety ze źródeł nadrzędnych stają się dostępne jako podrzędne natychmiast po ich opublikowaniu. Jednak pakiet będzie wyświetlany tylko w interfejsie użytkownika kanału informacyjnego po jego pozyskiwaniu. Pozyskiwanie jest wyzwalane po zainstalowaniu wersji pakietu z nadrzędnego źródła danych i nadrzędnego czytelnika (współpracownika) lub nowszego.

Pyt.: Co to są widoki kanału informacyjnego?

1: Widoki umożliwiają deweloperom selektywne udostępnianie podzestawu wersji pakietów, które zostały przetestowane i zweryfikowane, z wyłączeniem wszystkich pakietów, które są nadal opracowywane lub nie spełniają kryteriów jakości. Aby uzyskać więcej informacji, zobacz Co to są widoki kanału informacyjnego.

Pyt.: Nie mogę znaleźć kanału informacyjnego, który chcę skonfigurować jako źródło nadrzędne?

1: Upewnij się, że właściciel kanału informacyjnego udostępnia widok jako źródło nadrzędne.

Pyt.: Czy użytkownik z rolą Czytelnik kanału informacyjnego może pobierać pakiety ze źródła nadrzędnego?

Odpowiedź: Nie. Użytkownik z rolą Czytelnik kanału informacyjnego w kanale informacyjnym usługi Azure Artifacts może pobierać tylko pakiety zapisane w kanale informacyjnym. Pakiety są zapisywane w kanale informacyjnym, gdy kanał informacyjny i nadrzędny czytelnik (współpracownik), wydawca kanału informacyjnego (współautor) lub właściciel kanału informacyjnego instalują te pakiety z nadrzędnego źródła danych.

Pyt.: Co się stanie, gdy użytkownik usunie lub nie opublikuje pakietu zapisanego ze źródła nadrzędnego?

1: Pakiet staje się niedostępny do pobrania ze źródła danych, a numer wersji jest trwale zarezerwowany. Ponadto pakiet nie zostanie już zapisany ze źródła nadrzędnego. Nie będzie to miało wpływu na wcześniejsze i nowsze wersje pakietu.

Pyt.: Co się stanie, gdy użytkownik wycofa pakiet zapisany z nadrzędnego źródła?

O: Gdy użytkownik wycofa pakiet, do metadanych pakietu jest dodawany komunikat ostrzegawczy, który jest wyświetlany za każdym razem, gdy pakiet zostanie wyświetlony lub zainstalowany z kanału informacyjnego.