2014-02-06 2 views
3

В настоящее время я пытаюсь ускорить сборку Team City.OctoPack vs nuget.exe - Какой из них быстрее?

После успешного шага msbuild мы упакуем наше решение с помощью nuget.exe, а затем опубликуем в фид nuget, чтобы позволить Octopus Deploy делать это.

Я сейчас на этапе, когда шаг пакета nuget занимает ~ 4 минуты (у нас есть большое количество активов), а шаг публикации nuget занимает ~ 30 секунд. Это занимает около 75% нашего общего времени сборки, поэтому в любое время, когда я могу сбрить это, будет хороший прогресс.

Мне было интересно, есть ли у кого-нибудь опыт работы с OctoPack и nuget.exe, и в состоянии сказать мне, может ли один из двух методов быстрее другого? Никаких жестких цифр не требуется, достаточно простое доказательство.

+0

Octopack использует nuget для создания пакетов Nuget для очень специфического сценария - развертывания с Octopus Deploy. Вы не можете использовать nuget вместо Octopack. Если вы перефразируете вопрос «Как записать сборку Teamcity», ответ будет «Добавить Octopack в ваш проект и передать параметр/p: RunOctopack в msbuild, так что вам не потребуется дополнительный шаг индивидуальной упаковки для каждого целевого объекта развертывания " –

+0

@PanagiotisKanavos Вы можете создавать пакеты Octopus Deploy, используя только nuget.exe, если хотите. Подробнее здесь http://docs.octopusdeploy.com/display/OD/Упаковка + приложения. – MEMark

+0

@MEMark был там, не хочу идти снова. Нет причин идти ручным способом, когда доступен автоматический способ. Страница, которую вы опубликовали *, не позволяет объяснить, что необходимо для создания подходящего пакета Octopus с использованием Nuget. Вам нужно удалить файлы, которые не используются Octopus, добавить скрипты, преобразования и т. Д. –

ответ

0

Я не использовал nuget.exe, но я использую Octopack, и я могу сказать вам, что он упаковывает три проекта в нашем решении за 3 секунды, 7 секунд и 12 секунд соответственно.

Этап публикации артефактов для каждого пакета занимает от двух до четырех секунд. Очевидно, что если у вас есть большое количество активов, есть еще что рассмотреть, но, надеюсь, это даст вам время, затраченное на упаковку.

Кроме того, вы можете быть запущен и работает с Octopack в моменты, как это просто случай установки Octopack Nuget package в вашем решении, и установите флажок Run Octopack в вашем шаге сборки в Team Город:

enter image description here

+1

Спрашивая это, я сказал кому-то, что они думают, что Octopack использует nuget.exe под капотом, так что не будет быстрее. Я дам Octopack и посмотрю, что я получаю –

+0

Octopack - это просто удобная оболочка для nuget.exe - см., Например, метод RunNuGet() в [источниках] (https://github.com/OctopusDeploy/OctoPack /blob/master/source/OctoPack.Tasks/CreateOctoPackPackage.cs). –

2

В Octopack используется NuGet.exe, поэтому вы не можете реально сравнить их. Вы можете просмотреть OctoPack source code on GitHub, чтобы узнать, как это работает. Я хотел бы указать, что использование другой версии NuGet.exe может изменить ситуацию. У меня нет доказательств, подтверждающих это, но это выстрел в темноте.

В OctoPack вы можете передать параметр (NuGetExePath), чтобы указать спецификацию NuGet.exe, которую вы хотите использовать. См. Это targets file within the Octopack для получения дополнительной информации о параметрах, которые вы можете передать в OctoPack.