понедельник, 15 июня 2015 г.

Добавление дополнительного билд-агента в TeamCity

Сегодня добавлял дополнительные агенты на TeamCity, набил немного шишек и хочу поделиться опытом :)

TeamCity по умолчанию устанавливает сервер TeamCity и один билд-агент.  Агент может выполнять один билд одновременно. Количество агентов в основном ограничивает количество параллельных выполнений билдов. Агент может выполнять любой билд (с совместимой конфигурацией).

Когда у нас много билдов, то иногда скапливается очередь и приходится ждать выполнения нужного билда. Это долго, мучительно и больно. В бесплатной редакции есть возможность добавить еще 2 агента и этим нужно воспользоваться :)

Заходим в AdministrationInstall Build Agents


И скачиваем по ссылке установщик агентов


Запускаем установщик, выбираем компоненты 


Выбираем директорию, куда установить агент


Дальше нужно быть очень внимательным! 
Изменяем настройки агента


 Сохраняем. Появится следующее сообщение


Не нажимаем OK! 
Открываем в текстовом редакторе конфиг запуска сервиса агента C:\TeamCityBuildAgent004\launcher\conf\wrapper.conf
В конце файла создержатся настройки сервиса, изменяем их.


Сохраняем конфиг. Возвращаемся к установщику. Закрываем сообщение


Запускаем сервис агента


Все, через пару минут в TeamCity появится дополнительный агент.

Для дополнительной информации можно прочитать статью из официальной документации Setting up and Running Additional Build Agents.

среда, 3 июня 2015 г.

ASP.NET Core: Введение

Не за горами релиз  Visual Studio 2015 и ASP.NET 5. Давайте разбираться, что же это такое и как с этим жить. Вводная статья будет скучноватая, с кучей теории, но дальше постараюсь писать повеселее :)

Создадим новый проект веб-приложения File - New - Project - ASP.NET Web Application. Выберем шаблон Empty.

Структура решения(solution)


global.json

global.json файл используется для настройки всего решения. Он содержит 2 секции:
  • projects - указывает, какие папки содержат исходный код (по умолчанию папки src и test);
  • sdk - указывает версию DNX (.Net Execution Environment), которую Visual Studion будет использовать для открытия решения. Она указывается здесь, а не в project.json, чтобы избежать ситуации, в которых различные проекты в рамках решения в используют различные версии SDK.

Фреймворки

ASP.NET 5 можно собирать для нескольких фреймворков, что дает возможность разворачивать приложение в различных окружениях. По умолчанию приложения будет собираться для полной версии .NET, но они также могут собираться для .NET Core. Большинство унаследованных приложений будет собираться для полной версии ASP.NET 5, по крайней мере первоначально, поскольку они, вероятно, имеют зависимости, которые включают библиотеки из набора .NET Framework Class Library, которые не доступны в .NET Core сегодня. .NET Core облегченная версия платформы .NET, которая оптимизирована для веб-приложений и поддерживает Linux и Mac. .NET Core могжет быть развернут с приложением, что позволяет различным приложениям на одном сервере работать на различных версиях .NET Core. Он модульный, что позволяет дополнительные функции добавлять только тогда, когда это требуется, как отдельные пакеты NuGet.
Вы можете увидеть, какой фреймворк в настоящее время является целевым в свойствах проекта, щелкнув правой кнопкой мыши на веб-проекте в окне Solution Explorer и выбрав Properties:


По умолчанию, чекбокс для использования конкретных DNX версий снят. 

Структура проекта

Структура проекта ASP.NET 5 добавляет новые концепции и заменяет некоторые устаревшие элементы. 

Новая структура включает в себя специальную папку wwwroot, и раздел References, который присутствовал в предыдущих версиях ASP.NET (но был обновлен в этой версии).

В корне проекта есть несколько новых файлов, таких как project.json и Startup.cs. Вы можете заметить, что проект не содержит файлы global.asax, packages.config и web.config. В предыдущих версиях ASP.NET, большинство конфигураций приложения хранилось в этих файлах и в файле проекта.

project.json

Файл project.json является новым для ASP.NET 5. Он используется, чтобы определить server side зависимости проекта (описанные ниже), а также другую информацию для конкретного проекта. Разделы, включенные в project.json по умолчанию с шаблоном веб-проекта:



Раздел webroot указывает папку, которая будет корнем веб-сайта.

Раздел version указывает версию проекта. Вы можете добавить произвольные разделы, например titledescription, authors. 

ASP.NET 5 имеет хорошую поддержку командной строки и раздел commands позволяет настроить, что некоторые команды командной строки делать (например, запустить веб-сайт).



Раздел frameworks указывает, для каких фреймворков будет построен проект, и то, какие зависимости должны быть включены.



Раздел exclude используется для указания файлов и папок, которые должны быть исключены из сборки

Управление server-side зависимостями

Папка References описывает server-side зависимости для проекта. Она должна быть знакома разработчикам ASP.NET, но она была изменена, чтобы различать зависимости для различных фреймворков, таких как полный DNX 4.5.1 и DNX Core 5.0. Для каждого времворка вы найдете отдельные ссылки с пиктограммами, указывающими ли ссылка на сборку, пакет NuGet или проекта.


Я упоминал выше, что .NET Core ставится с приложением. Обратите внимание, что все зависимости для DNX Core являются Nuget пакетами (либо могут быть зависимости от).

Запуск приложения

Когда запускается приложение ASP.NET, среда выполнения ASP.NET вызывает метод ConfigureServices, а за ним - Configure в классе Startup.
Метод ConfigureServices используется, чтобы указать, какие сервисы доступны в приложении, т.е для настройки DI контейнера. Да, в ASP.NET теперь из коробки есть DI контейнер :)

Заключение

Я постарался осветить основные нововведения, которые вы увидите в новом проекте ASP.NET. Но это далеко не все. На очереди конфигурация, управление client-side зависимостями (npm, bower, grunt, gulp), MVC и Web API и многое другое. Продолжение следует.