Как настроить сборку TeamCity для проекта ASP.NET 5

Я пытаюсь настроить сервер CI для веб-сайта, который я разрабатываю, но я не могу найти никакой информации о том, как это сделать с новым ASP.NET 5.


person edua_glz    schedule 22.05.2015    source источник
comment
blog.coderinserepeat.com/2015 /25/01/   -  person Shrike    schedule 25.05.2015
comment
Я начал следовать этой статье, но в итоге использовал build.cmd, предложенный в ответе Виктора, я думаю, что ему легче следовать, хотя, на самом деле, нет документации о том, как использовать инструменты.   -  person edua_glz    schedule 25.05.2015


Ответы (5)


Мы (команда ASP.NET) используем TeamCity в качестве сервера сборки. В каждом репозитории есть файл build.cmd, похожий на этот файл. TeamCity просто вызывает этот файл.

Для сборок Mac/Linux существует файл build.sh.

person Victor Hurdugaci    schedule 22.05.2015
comment
Виктор, есть где-нибудь информация по инструментам Sake\KoreBuild? Почему вы выбрали Саке? - person Shrike; 25.05.2015
comment
Это то, как вы должны использовать это сегодня в 2016 году? Я просматривал build.cmd и пытался использовать KoreBuild из пакетов nuget. Этого пакета сегодня не существует. Любая идея о том, как построить это? - person Erlis Vidal; 13.01.2016
comment
KoreBuild (или KoreBuild-dotnet) не являются официальным способом создания автоматизации сборки. Это всего лишь внутренние пакеты Microsoft, которые мы публикуем публично. Хотя официально они не поддерживаются, вы можете их использовать. Пакет доступен только в фидах myget, но не в nuget. - person Victor Hurdugaci; 13.01.2016
comment
@PWKad мы все еще используем ту же систему сборки, что и год назад. Мы по-прежнему используем TeamCity и вызываем файл build.cmd/build.sh. Файлы сборки в ветке dev предназначены для dotnet, то есть RC2. Для RC1 вы должны использовать файлы из тега RC1. Есть ли что-то конкретное, что не сработало в вашем сценарии? - person Victor Hurdugaci; 23.03.2016
comment
@VictorHurdugaci Почему вы используете TeamCity? - person Edward Olamisan; 31.07.2017

Я понял тебя, брат. Это заняло у меня несколько дней, чтобы понять. Эта конфигурация находится в TeamCity v10 для проекта ASP.NET Core 1.0 RC2/preview2. В качестве бонуса я включаю шаг, на котором он переходит к Octopus Deploy. Вам потребуется установить подключаемый модуль dotnet teamcity и новейший подключаемый модуль Octopus Deploy с функцией Push. Вот обзор шагов сборки:

Обзор шагов сборки

Во-первых, не пытайтесь использовать dotnet restore для восстановления пакетов. Это не сработает, если у вас есть внутренние пакеты nuget, которые не скомпилированы как .Net Core. Это заняло целую вечность, чтобы понять. Я бы проигнорировал попытки использовать dotnet restore, пока люди не переведут все на .Net Core или Microsoft не исправит dotnet.exe, чтобы сделать его более гибким.

Построить шаг 1/3

В некоторых материалах, которые я читал, говорилось об использовании новейшей бета-версии NuGet, 3.5. Когда я попробовал это, я получил следующую ошибку.

[14:30:09][восстановление] Запуск NuGet.exe 3.5.0.1737 из папки D:\buildAgent\tools\NuGet.CommandLine.3.5.0-rc1\tools\NuGet.exe

[14:30:10] [восстановление] Не удалось загрузить тип «NuGet.CommandAttribute» из сборки «NuGet, версия = 3.5.0.1737, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35».

Я не знаю, что это значит, и мне все равно. Используйте пока 3.4.4. Остальные заполните по мере необходимости.

Построить шаг 2/3

Шаг dotnet publish довольно прост. Убедитесь, что вы указали выходной каталог, потому что вы хотите использовать его на последнем шаге. Кроме того, обязательно укажите абсолютный путь с помощью переменной %teamcity.build.workingDir% из-за этой ошибки< /а>. В противном случае он не сможет найти ваш файл web.config и не опубликует весь сайт. Вам будет не хватать таких вещей, как web.config и wwwroot! Построить шаг 3/3

Наконец, мы нажимаем на Octopus. Это было очень сложно для меня. Обратите внимание на часть, которая говорит %teamcity.build.workingDir%/published-app/**/* => OrderReviewBoard.1.0.0.zip

ЕСЛИ КАКАЯ-ЛИБО ЧАСТЬ ЭТОГО НЕДЕЙСТВИТЕЛЬНА, ВАШ ШАГ НЕ СОВЕРШИТСЯ БЕЗ ОБЪЯСНЕНИЯ!!! Под недействительным я имею в виду, возможно, вы поместили переменную среды teamcity (например, %build.number%, которую они показывают во всех примерах) в этом zip имя, которое не разрешается должным образом. Или вы указываете несуществующий путь. Или что-то еще, вы увидите сообщение об ошибке «[Octopus Deploy] Пожалуйста, укажите пакет для отправки». Это означает, что он никогда не был сгенерирован, потому что это выражение не удалось. Я понимаю, что вы хотите, чтобы там был автоматически увеличивающийся номер сборки. Я оставлю это на ваше усмотрение, чтобы понять, как это сделать.

Не запутайтесь в том, что здесь работает. Octopus пытается объяснить это на своем сайте, но здесь это скрыто. Есть octo pack и octo push. Новая версия octo pack исчезает из поля зрения, основываясь на любом утверждении, которое вы указали в поле «Пути пакетов». Не отвлекайтесь, пытаясь создать пакет nuspec или пытаясь использовать dotnet pack. Это тупиковые пути для наших целей. Создайте файл .zip и живите дальше. Наконец, обратите внимание на дополнительные аргументы командной строки, которые я добавил. Это поможет вам немного. Они не требуются. Удачи.

person redwards510    schedule 12.08.2016
comment
Я не могу заставить это решение работать. На первом этапе сборки происходит сбой со следующим сообщением об ошибке: Ошибка чтения «F:\TeamCity\Files\buildAgent\work\src\solutionname\project.json» в строке 13, столбце 23: TODO: платформа с неизвестным ключевым словом. Я убедился, что установлена ​​последняя версия CLI, но она все еще не работает. Сталкивались ли вы с этим, если да, то как вы это решили? - person dont_trust_me; 26.08.2016
comment
@Carl91 Carl91 Откройте файл project.json в своем решении. В строке 13 у вас явно неверная строка, комментарий TODO: something something. Удалите эту строку и нажмите на TeamCity. - person redwards510; 29.08.2016
comment
Единственное, что у меня было в строке 13, это netcoreapp1.0: {. Эта структура, похоже, не поддерживается в последней стабильной версии nuget (3.4.4.). Обновился до 3.5.0-beta2 и все заработало. - person dont_trust_me; 01.09.2016
comment
@redwards510 попробовал ваше решение (за исключением того, что я на TC9, поэтому я использую шаг командной строки dotnet publish %fullpathtomywui% вручную), и я получаю сообщение об ошибке: Lock file Microsoft.DotNet.ProjectModel.Graph.LockFile contains msbuild projects but there is no export file на шаге 2 - person Alex Zhukovskiy; 19.09.2016
comment
@AlexZhukovsky Можете ли вы запустить публикацию dotnet для целевого файла в оболочке cmd.exe? Выдает ту же ошибку? Это не похоже на ошибку TeamCity, но я не знаю... - person redwards510; 19.09.2016
comment
@redwards510 да, я получаю ту же ошибку, пока в каталоге не появится project.fragment.lock.json. Мой текущий обходной путь — вызвать MSBuild для файла xproj, который создает этот файл, а затем использовать публикацию dotnet, которая запускает ошибки без ошибок. Но ваш пост был очень полезен: например, я пытался работать с 3.5 RC1, но у меня была ошибка CommandAttribute, поэтому я использовал 3.4.4, которая работала - person Alex Zhukovskiy; 20.09.2016
comment
На сегодняшний день кли на microsoft.com/net/core#windows устарел. . github.com/dotnet/cli/issues/3237 - person Billy; 07.10.2016
comment
Спасибо, @redwards510 Вы знаете, как заставить Octopus Deploy получить этот пакет от TeamCity, а не отправлять его в nuget-канал Octopus? - person Billy; 07.10.2016
comment
@ Билли Извини, я не знаю. Мы обычно тоже так делаем. В этом случае я мог заставить его работать, только перетащив почтовый индекс в Octopus. Я думаю, что это было из-за ограниченной функциональности инструментов. - person redwards510; 10.10.2016

На данный момент вы можете попробовать использовать плагин TeamCity для проектов .NET Core: https://github.com/JetBrains/teamcity-dotnet-plugin

person dtretyakov    schedule 12.02.2016

Пожалуйста, проверьте эти сообщения в блоге;

http://blog.coderinserepeat.com/2015/01/25/building-asp-net-5-projects-in-teamcity/

http://blog.maartenballiauw.be/post/2014/12/19/Building-future-NET-projects-is-quite-pleasant.aspx

person detay    schedule 01.07.2015
comment
Что ж, ссылкам на посты в блогах больше года. Что я могу сказать, кроме, может быть, пожалуйста, проверьте дату сообщения в блоге и попытайтесь найти последнюю информацию, прежде чем тратить 5 часов в зависимости от нее? Особенно, если вы собираетесь использовать его в производстве. - person detay; 25.03.2016
comment
Проблема в том, что нет новой информации, которую я могу найти. Извините, я был очень расстроен на днях. На данный момент я удалю свои комментарии и проголосую против, но он все еще нуждается в лучшем способе. - person PW Kad; 25.03.2016

Поскольку в мире ASP.NET Core было много изменений, и меня несколько раз спрашивали об этом, я записал пошаговое руководство по настройке среды CI/CD с помощью TeamCity для .NET Core. Я думаю, что это особенно полезно для начинающих.

person Claudio Bernasconi    schedule 16.02.2017