Yukarı akış kaynakları

Azure DevOps Services | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 | TFS 2017

Yukarı akış kaynakları, farklı kaynaklardan gelen paketleri depolamak için tek bir akış kullanmana olanak sağlar: akışlardan ve NuGet.org, npmjs.com, Maven Central ve PyPI gibi genel kayıt defterlerinden tükettiğiniz paketler. Bir yukarı akış kaynağını etkinleştirdıktan sonra, akışınıza bağlı herhangi bir kullanıcı yukarı akıştan bir paket yükleyebilir ve bir kopya akışınıza kaydedilir.

Not

Özel yukarı akış kaynakları şu anda yalnızca npm için de desteklenebilir.

Avantajlar

Yukarı akış kaynakları, tek bir akışta ürün bağımlılıklarının hepsini yönetmenize olanak sağlar. Tüm paketlerinizi tek bir akışta yayımlamanın birkaç faydası vardır:

  • Basitlik: NuGet.config, .npmrc veya settings.xml gibi yapılandırma dosyanız yalnızca bir akış içerir, böylece hatalara ve hatalara daha az karşı daha az olur.
  • Determinism: Akışınız paket isteklerini sırayla çözümlemektedir, bu nedenle kodunuzu yeniden oluşturma daha tutarlı olur.
  • Kanıt: Akışınız yukarı akış kaynaklarından kaydedilen paketlerin kanıtını bilir, bu nedenle kopya veya kötü amaçlı paket yerine özgün paketi kullanmakta olduğunu doğrular.
  • Rahatla: Yukarı akış kaynaklarından yüklenmiş tüm paketlere bir kopya kaydedilir. Bu nedenle yukarı akış kaynağı devre dışı bırakılır, kaldırılır veya bakımdan kaldırılırsa, akışınıza paketin bir kopyasına sahip olduğunuz için geliştirme ve derlemeye devam edersiniz.

En iyi yöntemler - paket tüketicileri

Paket tüketicisi olarak yukarı akış kaynaklarının avantajlarından tam olarak yararlanmak için şu en iyi yöntemleri izleyin:

Yapılandırma dosyanız içinde tek bir akış kullanma

Akışınızı belirlenimci geri yükleme sağlamak için,nuget.config veya .npmrc gibi yapılandırma dosyanızı yalnızca bir akışa başvurarak yukarı akış kaynaklarının etkinleştirildiğinden emin olmak önemlidir.

Örnek:

  • nuget.config

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

Not

Etiket <clear /> gereklidir çünkü NuGet seçeneklerin tamamını belirlemek için birkaç yapılandırma dosyası oluştur. <clear />, NuGet üst düzey yapılandırma <packageSources> dosyalarında tanımlanan diğer tüm dosyaları yoksaymalarını söyler.

  • .npmrc:

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

Yukarı akış kaynaklarınızı kasıtlı olarak sıralama

Yalnızca nuget.org veya npmjs.com gibi genel kayıt defterleri kullanıyorsanız, yukarı akış kaynaklarınızı sıralamak ilgisizdir. Akışa yapılan istekler arama sırasına göre ilerler.

Akışların ve ortak kayıt defterlerinin karışımı gibi birden çok kaynak kullanıyorsanız her yukarı akış, akışın yapılandırma ayarlarında listelenmiş sırada aranır. Bu durumda, genel kayıt defterlerini yukarı akış kaynakları listesine ilk olarak yerleştirmenizi öneririz.

Nadir durumlarda, bazı kuruluşlar güvenlik sorunlarını düzeltmek, işlevsellik eklemek veya doğrudan genel depodan kullanmak yerine paketin sıfırdan sıfırdan gereksinimlerini karşılamak için OSS paketlerini değiştirmeyi seçer. Kuruluş bu düzeni kullanıyorsa, bu değiştirilmiş OSS paketlerini içeren yukarı akış kaynağını genel paket yöneticilerinden önce yer alan yukarı akış kaynağını, kuruluşun değiştirilmiş sürümlerini kullanmaya devam etmek için kullanın.

Önerilen varsayılan görünümü kullanma

Bir uzak akışı yukarı akış kaynağı olarak eklerken, akışın görünümünü seçmeniz gerekir. Bu, yukarı akış kaynaklarının bir dizi kullanılabilir paket oluşturmalarını sağlar. Daha fazla ayrıntı için bkz. paket grafiklerini tamamlama.

En iyi yöntemler: akış sahipleri/paket yayımcıları

Akışınızı kolayca bir yukarı akış kaynağı olarak yapılandırıldığından emin olmak için aşağıdaki en iyi yöntemleri uygulamayı göz önünde bulundurabilirsiniz:

Varsayılan görünümü kullanma

Görünüm, @local yeni oluşturulan tüm akışlar için varsayılan görünüm olur. Akışınıza yayımlanan veya yukarı akış kaynaklarından kaydedilen tüm paketleri içerir.

Görünümler kullanarak yeni paket sürümlerini serbest bırakmak için paketinizi gibi bir görünüme yükseltebilirsiniz ve @release bunu tüketicilerin kullanımına sebilirsiniz.

Paket grafı oluşturma

Akış bir paket için yukarı akış kaynağını sorgula Azure Artifacts belirli bir yukarı akış kaynağı için yapılandırılmış olan görünümde paketleri geri alır. Bir paket grafiği oluşturmak için akışın varsayılan görünümüne bağlanmanız ve paylaşmak istediğiniz paketi yüklemeniz gerekir. Paket varsayılan görünümde doğru şekilde yüklendikten sonra, paketi tüketmek isteyen kullanıcılar paket grafiğini çözümleyebilmiş ve istenen paketi yükleyebilir.

Arama sırası

Birden çok akışı (NuGet maven) destekleyen genel paket yöneticileri için, akışların sorgulanma sırası bazen belirsiz veya belirleyici değildir. Örneğin NuGet, yapılandırma dosyasındaki tüm akışlara paralel sorgular yapılır ve yanıtlar ilk gelen, ilk çıkar FIFO'su olarak işlenir.

Yukarı akış kaynakları, akışı ve yukarı akış kaynaklarını aşağıdaki sırayı kullanarak arayarak bu belirleyici olmayan davranışı önler:

  1. Akışa yapılan paketler.

  2. Yukarı akış kaynağından kaydedilen paketler.

  3. Yukarı akış kaynaklarından kullanılabilen paketler: Her yukarı akış, akışın yapılandırmasında listelenmiş sırada aranır

Hızlı arama özelliğinin tüm avantajını elde etmek için yapılandırma dosyanıza yalnızca bir akış dahil etmek öneririz.

Yukarı akış kaynaklarından paketleri kaydetme

Akışınız için yukarı akış kaynaklarını etkinleştirmiş olurken, yukarı akış kaynaklarından yüklenmiş paketler otomatik olarak akışınıza kaydedilir. Bu paketler doğrudan yukarı akıştan aşağıdaki gibi yüklenebiliyor veya bir bağımlılık çözümlemesi kapsamında yüklenebilir (yükleme, gibi bağımlılıkları npm install express express da accepts kaydedebilir).

Paketleri kaydetme, indirme performansını geliştirebilir ve özellikle iç ağlarda TFS sunucuları için ağ bant genişliğinden tasarruf sağlar.

Yukarı akış kaynaklarından paketleri geçersiz kılma

Yukarı akış kaynaklarını etkinleştirirken, yukarı akışta zaten var olan bir paket sürümünü yayımlamanın mümkün olmadığının farkında olun. Örneğin, NuGet.org yukarı akışı etkinleştirilirken, aynı paket sürümü NuGet.org'da mevcut olduğundan paketi Newtonsoft.Json 10.0.3 yayımlayazın.

Yukarı akış kaynaklarından biri üzerinde zaten var olan bir paket sürümünü yayımlamanız gerekirse, bu yukarı akış kaynağını devre dışı bırakmanız, paketinizi yayımlamanız ve ardından yukarı akış kaynağını yeniden etkinleştirmeniz gerekir.

Not

Yalnızca yukarı akıştan daha önce kaydedilmiş bir paket sürümünü yayımlayın. Yukarı akış kaynağı devre dışı bırakılmış veya kaldırılmış olsa bile kaydedilmiş paketler akışta kalır.

Sistem durumu

Akışta başarısız olan bir yukarı akış kaynağı varsa, meta veriler artık aynı protokolün paketleri için yenilenmez. Yukarı akış kaynağının durumunu görüntülemek için dişli simgesini dişli simgesi seçerek Akış ayarlarınıza erişin ve ardından Yukarı  akış kaynakları'ı seçin.

Herhangi bir hata varsa bir uyarı iletisi görüntülenir. Ayarlar sayfası, yukarı akış kaynaklarından hangilerinin başarısız olduğunu da belirtecek. Başarısız olan yukarı akışın seçimi hatanın nedeni ve nasıl çözüleceğinin yönergeleri gibi daha fazla ayrıntı sağlar.

Yukarı akış kaynağının durumunu gösteren ekran görüntüsü

Not

NuGet.org gibi ortak kayıt defterleri için, bir paketin genel kayıt defterine ne zaman ve akışınız tarafından indirilmek için kullanılabilir olması arasında 3-6 saat gecikme olur. Bu gecikme, iş zamanlaması ve veri yayılmasına bağlıdır. , yukarı akış kaynağı bir akış olduğunda gecikme Azure Artifacts olur.

Çevrimdışı yukarı akış kaynakları

Yukarı akış kaynakları, tüketicilerinizi ve altyapınızı planlanmamış kesintilere karşı korumanın harika bir yoludur. Bir yukarı akış kaynağından paket yükleyecek olurken, paketin bir kopyası akışınıza kaydedilir. Yukarı akış kaynağı kullanılamıyorsa, bakımdan geçirildi veya kullanılamıyorsa, ihtiyacınız olan paketlere akışından erişmeye devam edersiniz.

SSS

S: Paketimi akışımdan birinin yukarı akışlarında görememe rağmen göremiyorum.

A: Bir yukarı akışa ait paketler yayımlandıktan kısa süre sonra aşağı akışta kullanılabilir. Ancak paket, alındıktan sonra yalnızca akışınıza kullanıcı arabiriminde gösterilir. Bu, aşağı akış akışında ilk kez paket sürümünün yüklü olduğunu gerektirir.

S: Akış görünümleri nedir?

A: Görünümler geliştiricilerin yalnızca test edilmiş ve doğrulanmış paket sürümlerinin bir alt kümesini paylaşmasına ve hala geliştirme aşamasında olan ve/veya kalite çubuğunu karşılamamış paketleri dışlamasına olanak sağlar. Daha fazla ayrıntı için bkz. Akış görünümleri nedir?

S: Yukarı akış olarak yapılandırmak istediğim akışı bulamıyorum.

A: Akışın sahibinin bir görünümü yukarı akış kaynağı olarak paylaştığından emin olun.