Как да настроя Azure DevOps CI тръбопровод за изграждане/издаване за nuget пакети (разширено)

Като компания, ние създаваме NuGet пакети от различни git репо в Azure DevOps. След като пакетът бъде тестван и одобрен, той трябва да бъде споделен в рамките на организацията Azure DevOps.

Все още се боря с настройката на тръбопровода за изграждане/издаване чрез използване на емисии на Azure DevOps. Пакетите трябва първо да станат достъпни за тестване, преди да бъдат споделени в организацията.

Въпреки че има много препоръки и най-добри практики, споделени от Microsoft, все още не мога да намеря работещо решение. Ще обясня решенията, които съм пробвал досега:

Решение А

Използване на един канал за цялата организация. Пакетите се изпращат автоматично към @local feed и към изгледа @prerelease и @release, след като тестването приключи. Тръбопроводът се използва, както следва:

  • Работим според git-flow с разклонения за разработка, функция и главни.
  • Изграждането на CI се задейства в клона за разработка
  • Пакетът със суфикс за предварителна версия се изпраща към емисията @local.
  • Тестовете за приемане се извършват в други инструменти чрез активиране на квадратчето за отметка преди пускане в мениджъра на пакети NuGet във Visual Studio.
  • Когато пакетът бъде приет, се създава издание и се задейства нова компилация.
  • Опаковката е избутана

Проблеми Решение A:

  • Когато пакет бъде приет, той трябва да бъде повишен в изглед @release, но името на пакета все още съдържа суфикса -pre.
  • Когато пакетът е приет, според мен не трябва да се изисква нова компилация, освен ако не можете да извършите това от клон за освобождаване може би?
  • Въпреки че пакетът е видим само във визуално студио с предварителния суфикс, той може да бъде избутан със суфикса към @release изглед.
  • Когато даден пакет се рекламира, той трябва да се копира и съхранява без суфикс.

Разтвор Б

Използване на специален канал за всяко git хранилище (препоръчано от Microsoft) и публикуване на NuGet пакети в този канал от CI компилации. Всеки пакет се изпраща към емисията @local без суфикс. Когато пакет е тестван и приет, пакетът се повишава до изгледа @release. Всеки специален канал е конфигуриран като източник нагоре (@release view), пакетите от изгледа на изданието ще бъдат „кеширани“ в общия канал, споделен в организацията между всички екипи за разработка.

Проблеми Решение B:

  • Пакетите, които стават видими чрез източниците нагоре по веригата, се добавят/кешират само след като бъде извършено едно разполагане/сглобяване. Не можете да наложите това, когато пакет е повишен в изглед @release.
  • Всички екипи за разработка трябва да се абонират във Visual Studio за всички емисии на NuGet, за да инсталират най-новата версия на пакет. (30 git repos = 30 емисии)

Общи въпроси:

  • Работещ ли е git-flow, когато създаваме само NuGet пакети?
  • Трябва ли да работим с предварителни пакети или да ги запазим в @pre-release изглед без суфикса?
  • Чувствате се грешно да започнете нова компилация, за да имате пакет без суфикса. След като пакетът преди пускане бъде тестван, той трябва да бъде повишен само в изгледа за пускане.
  • Трябва ли да изградим пакета в компилацията на CI и да използваме компилация за освобождаване, за да освободим пакета. Виждал съм хора, които използват PowerShell с променливи на средата, за да популяризират пакет от една версия в друга.

Знам, че има много въпроси, но от доста време се боря с този проблем. Надявам се, че някой може да ми даде добри предложения.

Благодаря!


person wilkokosten    schedule 05.11.2018    source източник
comment
Опитвам се да настроя подобен сценарий. Аз също не мога да дам решение, няколко бележки: 30 репо = 30 емисии, не е ли идеята да се създаде 1 емисия, която разработчиците консумират и емисиите с пакети са източници нагоре по веригата за това? В идеалния случай бих искал да добавя етикет за предварително издание към пакети от клонове на функции, докато пакетите от основния клон (главен?) се считат за стабилни. Не съм сигурен как да настроя това.   -  person Anton    schedule 24.01.2019
comment
Имали ли сте някога късмет с това. Ние се борим със същия проблем, искаме всички пакети на NuGet от клонове на функции да имат името на клона като предварителната версия.   -  person user351711    schedule 18.05.2019


Отговори (1)


Това, което правя, е в моята линия за компилиране да изграждам предварителна версия и пакет за версия и ги записвам и двете в моите артефакти.

В моя канал за издаване публикувам пакета за предварителна версия в локален кеш, след като съм готов за UAT, одобрявам версията за UAT и това го публикува като пакет за предварителна версия. След завършване на UAT той се одобрява за пускане до пускане, което публикува пакета за пускане.

person James Thompson    schedule 27.06.2019