2016-04-07 9 views
1

Ich habe kürzlich Nuget Gallery (https://github.com/NuGet/NuGetGallery) als Repository installiert. Idealerweise möchte ich mehrere Feeds erstellen, um zwischen Nuget-Paketen, die in anderen Projekten wiederverwendet werden (DLLs, Verträge usw.), von den Paketen unterscheiden zu können, die wir für die Bereitstellung unserer Projekte in der Produktionsumgebung verwenden.Nuget Gallery mit mehreren Feeds

Ich weiß, dass ich dies erreichen kann, indem ich mehrere Instanzen der Nuget Gallery erstelle, aber das scheint mir ein bisschen übertrieben zu sein, es würde zwei Websites zwei Datenbanken bedeuten. Mir ist auch bekannt, dass MyGet dies funktional bietet, aber ich werde keine Genehmigung für den Kauf erhalten. Ich weiß auch, dass teamcity einen eigenen Feed-Server enthält, aber dieses Mehrfach-Feed-Szenario nicht erlaubt und auch nicht gut genug ist, um in großem Umfang genutzt zu werden.

In aller Kürze das ideale Einsatzszenario wie folgt sein würde:

  • Teamcity generiert Bereitstellungspaket oder dll/Vertragspaket, je nach dem Build-Szenario.
  • teamcity veröffentlicht Bereitstellungspakete in einem Nuget-Galerie-Bereitstellungs-Feed (z. B .: nugetgallery.server.com/ deploy/api/v2).
  • teamcity veröffentlicht Dll/Vertragspakete zu einem nugget gallery dev feed (sagen: nugetgallery.server.com/ dev/api/v2).
  • Krake sucht immer nach Paketen in nugetgallery.server.com/ in nugetgallery.server.com/ dev/api/v2
/api/v2
  • Devs/Teamcity sucht Pakete bereitstellen

    Auf diese Weise behalte ich die Dinge sauber und ich kann sogar einen dritten Feedtyp erstellen, der nur Release-Pakete enthält, sodass ich sicher sein kann, dass nichts zur Produktion bereitgestellt wird, wenn es nicht in diesem Feed enthalten ist.

    Ich könnte einige grundlegende Ansatz verpasst haben, so dass Alternativen zu dieser, die ich ausgewählt habe, sind willkommen.

  • +0

    , zwei nuget Feeds erfordert zwei Websites, für NugetGallery und NugetServer. Benötigt es zwei Datenbanken? Ich habe noch nie mit NugetGallery gearbeitet, aber für NuGetServer weiß ich, dass Sie die beiden Websites auf den gleichen Repository-Pfad verweisen können. –

    +0

    Ich bin ziemlich sicher, dass ich auch zumindest die Dateien auf der gleichen Stelle zeigen könnte, aber nicht so sicher über die gleiche Datenbank für zwei verschiedenen Standorten, wie ich nicht einen Weg finden kann es Pakete basierend auf der URL unterscheiden würden sie aus hochgeladen wurden . Ich denke, es wäre wie zwei Instanzen der gleichen Website nicht zu haben? Es gibt eine Gallery.SiteRoot-Taste, die ich ausprobieren und damit spielen kann, sehen, ob der Zweck passt – rjso

    +0

    Hmmm, guter Punkt. Bei Ihrer Einrichtung würden Sie zwei Datenbanken benötigen, weil Sie Kollisionen mit Paket-IDs hätten, wenn Sie eine Datenbank freigegeben hätten, richtig? Das bedeutet für mich, dass Sie wahrscheinlich zwei separate Datenbanken benötigen. –

    Antwort

    1

    Da ich nichts Relevantes finden konnte, gab ich letztendlich auf und ging mit der Zwei-Server-Lösung. Ich hatte viel Mühe, eine Dokumentation zu finden, welche Funktionalitäten die nugget-Galerie wirklich hat.

    Im Moment haben wir etwas wie deploy-nuget.server.com und dev-nuget.server.com, separate URLs, iis-Instanzen und sql-Instanzen und den Speicherort des Ordners.

    Für jemanden, der in Zukunft in diese Angelegenheit schauen könnte, ist eine der Lösungen, die arbeiten könnte, private Repository basierend auf dem Benutzer, leider in meinem Fall, das wäre nicht genug, wie ich auch die Pakete sein möchte an verschiedenen Orten gespeichert, so dass wir unterschiedliche Backup-Richtlinien basierend auf dem Pakettyp erzwingen können. Eine andere Option wäre, das Projekt zu verändern, aber aufgrund meiner früheren Erfahrung endet es nie gut, denn früher als später werden Sie ein Upgrade durchführen wollen und Ihre benutzerdefinierten Änderungen müssen irgendwie sortiert werden.

    Ich verstehe, dass dies nicht die Idee hinter nuget Galerie ist, wie Sie Pakete nicht löschen sollen. Wir haben jedoch einige Platzbeschränkungen, so dass wir eventuell bestimmte Implementierungspakete entfernen, die für QA-Umgebungen erstellt wurden und die uns offensichtlich nicht mehr interessieren.

    0

    können Sie Proget versuchen. Mit diesem Server können Sie einfach mehrere NuGet-Feeds verwalten. es bietet auch kostenlose Edition, die alle Funktionen unterstützt. afaik