Я пытаюсь настроить сервер CI для веб-сайта, который я разрабатываю, но я не могу найти никакой информации о том, как это сделать с новым ASP.NET 5.
Как настроить сборку TeamCity для проекта ASP.NET 5
Ответы (5)
Мы (команда ASP.NET) используем TeamCity в качестве сервера сборки. В каждом репозитории есть файл build.cmd
, похожий на этот файл. TeamCity просто вызывает этот файл.
Для сборок Mac/Linux существует файл build.sh
.
build.cmd
/build.sh
. Файлы сборки в ветке dev предназначены для dotnet
, то есть RC2. Для RC1 вы должны использовать файлы из тега RC1. Есть ли что-то конкретное, что не сработало в вашем сценарии?
- person Victor Hurdugaci; 23.03.2016
Я понял тебя, брат. Это заняло у меня несколько дней, чтобы понять. Эта конфигурация находится в 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, чтобы сделать его более гибким.
В некоторых материалах, которые я читал, говорилось об использовании новейшей бета-версии 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. Остальные заполните по мере необходимости.
Шаг dotnet publish
довольно прост. Убедитесь, что вы указали выходной каталог, потому что вы хотите использовать его на последнем шаге. Кроме того, обязательно укажите абсолютный путь с помощью переменной %teamcity.build.workingDir%
из-за этой ошибки< /а>. В противном случае он не сможет найти ваш файл web.config
и не опубликует весь сайт. Вам будет не хватать таких вещей, как web.config и wwwroot!
Наконец, мы нажимаем на 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 и живите дальше. Наконец, обратите внимание на дополнительные аргументы командной строки, которые я добавил. Это поможет вам немного. Они не требуются. Удачи.
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
project.fragment.lock.json
. Мой текущий обходной путь — вызвать MSBuild для файла xproj, который создает этот файл, а затем использовать публикацию dotnet, которая запускает ошибки без ошибок. Но ваш пост был очень полезен: например, я пытался работать с 3.5 RC1, но у меня была ошибка CommandAttribute
, поэтому я использовал 3.4.4, которая работала
- person Alex Zhukovskiy; 20.09.2016
На данный момент вы можете попробовать использовать плагин TeamCity для проектов .NET Core: https://github.com/JetBrains/teamcity-dotnet-plugin
Пожалуйста, проверьте эти сообщения в блоге;
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
Поскольку в мире ASP.NET Core было много изменений, и меня несколько раз спрашивали об этом, я записал пошаговое руководство по настройке среды CI/CD с помощью TeamCity для .NET Core. Я думаю, что это особенно полезно для начинающих.