Co to są źródła nadrzędne?

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

Źródła nadrzędne usługi Azure Artifacts umożliwiają deweloperom wygodne przechowywanie pakietów z różnych źródeł w jednym strumieniu, w tym zarówno pakietów, które publikujesz, jak i tych instalowanych z zewnętrznych strumieni lub publicznych rejestrów, takich jak NuGet.org czy npmjs.com. Po włączeniu źródeł nadrzędnych wszystkie pakiety zainstalowane ze źródła nadrzędnego są automatycznie zapisywane w repozytorium.

Uwaga

Aby zapisać pakiety z zewnętrznych źródeł, musisz mieć rolę Czytelnik kanałów i źródeł (współpracownik) lub wyższą. Aby uzyskać więcej informacji, zobacz Zarządzanie uprawnieniami .

Dlaczego warto używać źródeł nadrzędnych?

Włączenie nadrzędnych źródeł zapewnia kilka korzyści dotyczących zarządzania zależnościami produktu w ramach jednego kanału informacyjnego:

  • Prostota: przechowywanie wszystkich pakietów w jednym repozytorium upraszcza pliki konfiguracji, takie jak NuGet.config, npmrc lub settings.xml. Wystarczy jedno źródło danych w pliku konfiguracji, aby zmniejszyć prawdopodobieństwo wystąpienia błędów i usprawnić konfigurację.

  • Spójne kompilacje: Kanał dystrybucji rozwiązuje żądania pakietów w zdefiniowanej kolejności, zapewniając bardziej przewidywalne i niezawodne kompilacje.

  • Integralność Pakietów: Strumień zachowuje metadane dotyczące pakietów zapisanych ze źródeł nadrzędnych, co pozwala zweryfikować ich autentyczność i upewnić się, że używasz oryginalnych wersji, a nie kopii ani potencjalnie złośliwych wersji.

  • niezawodność: pakiety zainstalowane ze źródeł nadrzędnych są automatycznie zapisywane w kanale informacyjnym. Zapewnia to stały dostęp nawet wtedy, gdy źródło nadrzędne stanie się niedostępne z powodu konserwacji lub innych problemów, dzięki czemu można kontynuować opracowywanie i budowanie z ufnością.

Najlepsze rozwiązania dla użytkowników 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:

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

Aby źródło danych dostarczało deterministyczne przywracanie, 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.

  • Przykłady:

    .npmrc
    registry=https://pkgs.dev.azure.com/fabrikam/_packaging/FabrikamFiber/npm/registry/
    always-auth=true
    
    nuget.config
    <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. Użycie <clear /> gwarantuje, że wszystkie inne źródła pakietów określone w plikach konfiguracji wyższego poziomu są ignorowane.

2. Uporządkuj nadrzędne źródła z zamysłem

Jeśli używasz tylko rejestrów publicznych, takich jak NuGet.org lub npmjs.com, kolejność źródeł nadrzędnych nie ma znaczenia. Żądania do kanału są zgodne z sekwencją opisaną w rozdziale kolejności wyszukiwania.

Jednak w przypadku zarządzania wieloma źródłami, takimi jak kombinacja źródeł i publicznych rejestrów, każde źródło nadrzędne jest przeszukiwane w kolejności zdefiniowanej 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 modyfikują pakiety oprogramowania open source (OSS), aby rozwiązać problemy z zabezpieczeniami, zwiększyć funkcjonalność lub spełnić określone wymagania wewnętrzne, które wymagają ponownego kompilowania pakietu wewnętrznie, a nie uzyskania go bezpośrednio z repozytorium publicznego. Jeśli twoja organizacja stosuje tę praktykę, umieść nadrzędne źródło zawierające te dostosowane pakiety systemu operacyjnego przed innymi publicznymi rejestrami. Gwarantuje to, że Twoje dostosowane wersje są używane zamiast publicznych.

Najlepsze praktyki dla właścicieli kanałów danych i wydawców pakietów

Aby upewnić się, że kanał informacyjny można łatwo skonfigurować jako nadrzędne źródło, postępuj zgodnie z następującymi najlepszymi rozwiązaniami:

1. Użyj widoku domyślnego

Domyślny widok dla wszystkich nowo utworzonych kanałów informacyjnych to @Local, który zawiera wszystkie pakiety opublikowane w kanale informacyjnym, a także pakiety 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 przenieść pakiety do widoku @Release, a następnie udostępnić ten widok docelowym odbiorcom. Aby uzyskać więcej informacji, zobacz widoki kanału informacyjnego.

2. 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ć żądaną wersję. Pakiety ze źródeł nadrzędnych są wyświetlane na podstawie skonfigurowanego widoku dla odpowiedniego nadrzędnego źródła. Aby uzyskać więcej informacji, zobacz Jak upstreamy budują zestaw dostępnych pakietów.

Kolejność wyszukiwania

W przypadku publicznych menedżerów pakietów obsługujących wiele kanałów, takich jak NuGet i Maven, kolejność przeszukiwania kanałów może czasami być niejasna lub niedeterministyczna. Na przykład NuGet wysyła zapytania równoległe do wszystkich źródeł w pliku konfiguracji i przetwarza odpowiedzi w sposób "pierwsze przyszło, pierwsze wyszło" (FIFO), co może prowadzić do niespójnych wyników.

Źródła nadrzędne eliminują tę niepewność, wymuszając ustrukturyzowaną kolejność wyszukiwania, wyszukując źródło danych i jego źródła nadrzędne w następującej kolejności:

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

  2. Pakiety, które zostały zachowane 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 jakiej znajduje się w konfiguracji kanału informacyjnego.

Uwaga

Usługa Azure Artifacts nie obsługuje wyszukiwania pakietów w źródłach nadrzędnych przy użyciu Eksploratora pakietów NuGet w programie Visual Studio.

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

Po włączeniu źródła nadrzędnego w twoim kanale informacyjnym, Azure Artifacts automatycznie zapisze kopię każdego pakietu zainstalowanego przez współpracownika lub osoby z wyższymi uprawnieniami z nadrzędnego źródła.

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 takim przypadku zainstalowanie express spowoduje również zapisanie zależności, takich jak akceptuje.

Źródła nadrzędne zapewniają ważną ochronę konsumentów i infrastruktury, chroniąc je przed nieoczekiwanymi awariami. Jeśli nadrzędne źródło ma przestoje, konserwację lub stanie się tymczasowo niedostępne, nadal możesz pobrać niezbędne pakiety ze źródła danych i kontynuować programowanie.

Uwaga

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

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

Po włączeniu źródeł nadrzędnych należy pamiętać, że nie można opublikować wersji pakietu, która już istnieje w nadrzędnym źródle. Jeśli na przykład włączysz nadrzędny NuGet.org, nie będziesz mógł opublikować pakietu Newtonsoft.Json 10.0.3, ponieważ ta wersja jest już dostępna na NuGet.org.

Jeśli musisz opublikować wersję pakietu, która już istnieje w jednym z nadrzędnych źródeł, wykonaj 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.

Ten proces gwarantuje, że można opublikować żądaną wersję przy zachowaniu integralności nadrzędnych źródeł.

Uwaga

Wersje pakietów są niezmienne. Zapisane pakiety pozostają w kanale, 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 strumienia danych ulega awarii, 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 swój kanał z menu rozwijanego.

  3. Wybierz ikonę koła zębatego, aby przejść do Ustawienia kanału, a następnie wybierz Ź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 na status Niepowodzenie zapewnia dodatkowe szczegóły, w tym przyczynę niepowodzenia i instrukcje dotyczące 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 wypchnięciem pakietu do rejestru publicznego i udostępnieniem go do pobrania. To opóźnienie zależy od terminów zadania i przekazywania 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.

Często zadawane pytania

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

Pakiety ze źródeł nadrzędnych stają się dostępne w kanale podrzędnym niedługo po opublikowaniu. Jednak pakiet będzie widoczny tylko dla czytelników po zapisaniu go w kanale informacyjnym. Pakiet jest zapisywany w momencie, gdy użytkownik z uprawnieniami czytelnika kanałów i upstream (Współpracownik) lub wyższymi instaluje wersję w kanale podrzędnym. Spowoduje to uruchomienie zapisania kopii pakietu z systemu nadrzędnego przez system podrzędny, po czym jest ona trwale zapisywana i dostępna w systemie podrzędnym dla wszystkich czytelników. Dzieje się tak, gdy wersja pakietu staje się widoczna w sekcji wersji pakietu internetowego interfejsu użytkownika.

Q: Co to są widoki kanału informacyjnego?

Widoki umożliwiają deweloperom selektywne udostępnianie podzestawu wersji pakietów, które zostały przetestowane i zweryfikowane, z pominięciem pakietów, które są nadal opracowywane lub nie spełniły kryteriów jakości. Aby uzyskać więcej informacji, zobacz Co to są widoki kanałów informacyjnych.

.: 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ępnił widok jako źródło nadrzędne. Aby uzyskać więcej informacji, zobacz Dodawanie kanału informacyjnego w innej organizacji jako nadrzędnego źródła.

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

Odpowiedź: Nie. Użytkownik z rolą czytelnika 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 Czytelnik Kanału i Źródła Nadrzędnego (Współpracownik) , Wydawca Kanału (Współautor) lub Właściciel Kanału instaluje te pakiety z nadrzędnego źródła.

.: 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 będzie już zapisywany z macierzystego źródła. Nie będzie to miało wpływu na wcześniejsze i nowsze wersje pakietu.

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

1: Gdy użytkownik wycofa pakiet, do metadanych pakietu zostanie dodany komunikat ostrzegawczy. To ostrzeżenie jest wyświetlane za każdym razem, gdy pakiet zostanie wyświetlony lub zainstalowany z kanału informacyjnego.