Создайте .nupkg с TeamCity для .NET Core 2.0

Я пытаюсь использовать TeamCity и Octopus Deploy для процесса CI / CD решения, построенного на .NET Core 2.0. У меня возникли проблемы с правильной настройкой шагов сборки в teamcity, так как я не получаю никаких созданных пакетов. Я использую подключаемый модуль .NET Core для TeamCity с соответствующими шагами:

  • 'dotnet restore'
  • 'dotnet build'
  • 'dotnet pack'
  • 'dotnet publish'

Я также включаю этап «Пакет OctopusDeploy», но, поскольку пакеты не созданы, этот шаг ничего не делает.

Poject не содержит никаких файлов .json для проекта (только некоторые файлы конфигурации), но файлы .csproj. Я новичок в этом процессе CI / CD, но я успешно реализовал его для решения .NET Framework 4.6.1 с использованием Octopack.

Есть идеи, как я могу это решить? Любые отзывы приветствуются.


person roartn    schedule 06.09.2017    source источник


Ответы (2)


Мне удалось заставить его работать с упаковкой в ​​файлы пакета * .zip с помощью инструмент octo.exe.

Итак, у меня есть следующие шаги сборки TC для сборки релиза в Octopus:

  1. Dotnet Restore - .NET Core (dotnet) - восстанавливает пакеты NuGet
  2. Gulp (необязательно) - Gulp - запускает задачи gulp.
  3. Dotnet Test (необязательно) - .NET Core (dotnet) - запускает тесты в тестовых проектах.
  4. Dotnet Build - .NET Core (dotnet) - выполняет сборку проекта.
  5. Dotnet Publish - .NET Core (dotnet) - публикует проект в указанный выходной каталог
  6. * Octo Pack - Командная строка - запускает инструмент командной строки octo.exe со следующей командой octo pack --id %PackId% --version %PackVersion% --basepath %PackDirectoryPath% --format zip --outfolder %ArtifactsDirectoryPath%
  7. Octo Push - OctopusDeploy: Push packages - отправляет упакованные файлы во встроенный репозиторий пакетов Octopus.
  8. Octo Create Release - OctopusDeploy: Create release - создает выпуск в Octopus с включенными в него нужными пакетами.

* Очевидно, вам следует установить инструмент octo.exe на сервере агента TC и добавить его в переменную PATH, чтобы иметь возможность вызывать его из сборки TC.

person sarbis    schedule 06.09.2017
comment
Octo.exe также доступен как пакет Nuget - nuget.org/packages/OctopusTools - person benPearce; 08.09.2017
comment
Извините, я совсем забыл оставить вам отзыв ... Спасибо за ваш вклад, эта процедура работает очень хорошо! Хотя я использую CMD (dotnet build ProjectName.Models\ProjectName.Models.csproj --framework netcoreapp2.0 --configuration Release...) Для сборки файлов проекта в определенном порядке, поскольку многопроцессорная сборка .sln имеет тенденцию блокировать файлы и нарушать сборку, как указано в ссылка. Кроме того, я не указываю --format или --outfolder в Octo Pack. Помечено как ответ! - person roartn; 13.12.2017

С DotNet Core теперь вам не нужно делать все эти настройки.

Пакет Nuget можно создать как часть этапа сборки.

Следуйте этим простым шагам

  1. Щелкните правой кнопкой мыши проект (.csproj) и выберите свойства.
  2. На экране свойств выберите вкладку Пакет в меню справа и отметьте (выберите) Создать пакет NuGet при сборке.
  3. Введите основные настройки пакета, такие как идентификатор пакета, версия, автор и т. Д. (Должны заполняться автоматически)
  4. Сохранять

    Запустите одну сборку TeamCity с помощью простого шага сборки dotnet, прежде чем переходить к следующему шагу.

  5. Перейдите в настройки сборки проекта Team City

  6. Выберите Общие настройки, в Путь к артефакту выберите значок дерева и перейдите в папку Bin \ Release, где вы увидите свой пакет Nuget. Выберите этот файл и сохраните.

Снова запустите сборку в Team City, и после успешного завершения сборки вы увидите файл пакета NuGet в артефактах.

Надеюсь, это поможет, поскольку вы не видите необходимости в шагах Octopus Pack или Dotnet Pack.

person Nouman Shams    schedule 06.09.2018