Как опубликовать на nuget.org с помощью Octopus Deploy?

Я хотел бы использовать Octopus Deploy, чтобы позволить нам публиковать на nuget.org. Я «предполагаю» следующий рабочий процесс.

  • Объедините nuspec, который будет опубликован на nuget.org (myapp.nupkg).
  • Соберите указанный выше nupkg вместе со скриптом build.ps1 для запуска Octopus (toPublish.nupkg).
  • Разверните «toPublish.nupkg» локально и запустите скрипт build.ps1.

Скрипт build.ps1 публикует API на nuget.org
http://www.dzone.com/articles/using-powershell-publish-nuget

Это звучит правильно, или я ошибаюсь?

Если это звучит правильно, что мне делать с ключом API для nuget.org? Очевидно, я не могу поместить его в репозиторий Github, есть ли у Octopus способ обработки переменных в powershell?

Текущая версия Octopus: 1.6.2.1722


person Chase Florell    schedule 26.04.2014    source источник
comment
Я пытался поместить файл nupkg в nuspec <file src="somefile.nupkg" target="content" />, но при сборке ничего не появляется. Я думаю, что в nuget встроена какая-то защита.   -  person Chase Florell    schedule 29.04.2014
comment
Добавлено по запросу для чистой встроенной интеграции.   -  person Chase Florell    schedule 30.04.2014


Ответы (1)


Теоретически я думаю, что вы могли бы опубликовать пакет nuget на nuget.org, просто используя OctoPack, поскольку он позволяет указать ключ API и URL-адрес для отправки. Это то, что эффективно делает этот скрипт powershell; создание пакетов nuget и отправка их по URL-адресу с помощью ключа API.

Конечно, я также предполагаю, что вы используете TFS, так что это плохое предположение с моей стороны. Если вы не хотите использовать OctoPack (или не можете), вы также можете использовать сценарий powershell, который вы предоставили.

Однако для переменных Octopus определенно может это сделать, однако для версии 1.6 я не уверен на 100%, насколько обширна функция переменных, поскольку у меня практически нет опыта работы с версией 1.6. Я гораздо лучше знаком с 2.0+.

Таким образом, для версии 2.0+ на вкладке «Переменные» вашего проекта вы можете указать имена переменных для использования в сценариях PowerShell (и ссылаться с помощью #{имя_переменной}). Ознакомьтесь с официальной документацией здесь: http://docs.octopusdeploy.com/display/OD/Variables< /а>.

Имейте также в виду, что в версии 2.0 есть возможность пометить ваши переменные как «конфиденциальные», чтобы они были зашифрованы в RavenDB и скрыты от посторонних глаз (только после сохранения!). Когда значение находится на вкладке переменных как «конфиденциальное», вы никогда не сможете увидеть значение в пользовательском интерфейсе Octopus. Опять же, я думаю, что это функция 2.0+, поэтому при использовании 1.6 она может быть недоступна.

Я бы порекомендовал обновиться до версии Octopus 2.0+, если это возможно, так как их дорожная карта содержит огромное количество новых функций и также в очень агрессивном темпе.

person osij2is    schedule 30.04.2014
comment
Спасибо за обширный ответ. Мы планируем обновиться до версии 2.4, когда она выйдет. Мы используем Gitblit и TeamCity для нашей системы репо и сборки (не TFS). Итак, вы говорите, что мне не нужно связывать nupkg внутри nupkg? Как работает этот OctoPack? Обратите внимание, что наш nupkg уже собран и помещен в папку build_artifacts в TeamCity. - person Chase Florell; 30.04.2014
comment
Я рассмотрю ваш вопрос в двух частях. OctoPack — это время сборки dll для решений, использующих MSBuild. Вы можете просто установить OctoPack через NuGet. OctoPack (если он включен) может автоматически создавать все пакеты nuget в вашем решении (при условии, что в них присутствует файл nuspec) и отправлять указанные сгенерированные пакеты на URL-адрес вместе с ключом API. Я не уверен, что OctoPack может работать с TeamCity, поскольку я никогда не использовал его раньше, но ознакомьтесь с документацией здесь: docs.octopusdeploy.com/display/OD/Using+OctoPack. - person osij2is; 30.04.2014
comment
Что касается объединения пакета nuget внутри другого пакета, вам не нужно этого делать, если только вы не пытаетесь сделать что-то, о чем я не знаю. Octopus может развернуть столько пакетов nuget, сколько вы хотите, однако не все они могут произойти на одном шаге. Для чего ваше решение? .NET-сайт? Приложение? Услуга? Лазурь? Может быть, есть более простой способ выполнить то, что вы пытаетесь сделать. - person osij2is; 30.04.2014
comment
О, подождите, кажется, я неправильно понял. Я снова прочитал твой пост. Итак, вы пытаетесь связать пакет nuget для развертывания Octopus исключительно внутри вашего хост-пакета для nuget.org? Я правильно это понимаю? - person osij2is; 30.04.2014
comment
это правильно. У меня есть проект OSS на Github, предназначенный для Nuget.org. Я хочу упростить наши выпуски, интегрировав Octopus, а не загружая артефакт вручную, а затем загружая его вручную. Кроме того, поскольку нам не нужна каждая сборка в Nuget, мы не хотим привязывать ее к шагу сборки в TeamCity. - person Chase Florell; 30.04.2014
comment
Octopus по умолчанию не интегрируется напрямую с TFS/TeamCity/любым решением CI, так что не о чем беспокоиться. По сути, вы пытаетесь связать сценарий build.ps1 с пакетом nuget вашего хоста (myapp.nupkg) в окончательный пакет для nuget.org (toPublish.nupkg). Думаю, я понял. :P Разве вы не можете просто включить этот сценарий powershell в свое решение, поскольку он не называется predeploy.ps1, deploy.ps1 или postdeploy.ps1? Затем в Octopus вы просто запускаете скрипт powershell, который упаковывает ваше решение и отправляет его на nuget.org. Да, это вполне достижимо, хотя я никогда этого не делал. - person osij2is; 30.04.2014
comment
звучит примерно так. Первоначально я пытался объединить nupkg (для nuget.org) внутри nupkg, который пытается развернуть Octopus. К сожалению, в nuget.exe есть встроенная защита, которая предотвращает вложение nupkg. Мне нужно придумать другой способ... просто не знаю, как, и я не уверен, что знаю, как лучше всего использовать осьминога. - person Chase Florell; 30.04.2014
comment
У вас есть правильная идея для Осьминога. Я знаю, что Octopus изменит способ работы со сценариями powershell во вложенных решениях: octopusdeploy.com /blog/rfc-root-most-scripts - person osij2is; 30.04.2014
comment
давайте продолжим это обсуждение в чате - person osij2is; 30.04.2014