Информационный портал по безопасности » Программирование » Как настроить Travis CI для проекта .NET Core + PostgreSQL

 

Как настроить Travis CI для проекта .NET Core + PostgreSQL

Автор: admin от 1-08-2017, 00:55, посмотрело: 543

Я расскажу о том, как настроить автоматический запуск модульных тестов в сервисе Travis CI для .NET Core проекта, в котором используется PostgreSQL.



Можно использовать эту статью как пример для быстрого старта.



Как настроить Travis CI для проекта .NET Core + PostgreSQL

У меня есть хобби-проект — инструмент для версионной миграции БД на .NET Core. Он умеет работать с несколькими СУБД, в том числе, с PostgreSQL. В проекте есть некоторое количество тестов (xUnit), которым для работы тоже нужен PostgreSQL.



Я много слышал про Travis CI и давно хотел настроить в нем автоматический запуск тестов, но меня останавливало две вещи:




  • было неясно, как скрестить Travis CI и .NET Core;

  • непонятно, как настроить PostgreSQL для тестов.



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



Что такое Travis CI



Travis CI — это continuous integration сервис для проектов на Github. Когда вы коммитите что-то в репозиторий, Travis CI может автоматически выполнять разные полезные действия. Например, он может запускать модульные тесты и линтеры кода. Я буду называть эти полезные действия словом "сборка" ("build").



Чтобы настроить Travis CI для своего репозитория, нужно указать адрес репозитория в веб-интерфейсе Travis CI и положить в корень проекта файл .travis.yml с настройками сборки.



Настройка Travis CI



Первое, что нужно сделать — залогиниться на сайте https://travis-ci.org, используя свой GitHub аккаунт. После этого вы увидите список всех своих репозиториев. Нажмите на переключатель напротив репозитория, для которого нужно включить интеграцию с Travis:



Как настроить Travis CI для проекта .NET Core + PostgreSQL

Далее перейдите в настройки выбранного репозитория. Здесь вы можете настроить, в каких случаях нужно запускать сборку. Я указал, что сборку нужно запускать при каждой операции Push в репозиторий, а также при создании или изменении Pull request. Кроме того, я указал, что сборку нужно запускать только если в корне репозитория есть конфигурационный файл .travis.yml.



Как настроить Travis CI для проекта .NET Core + PostgreSQL

Пример .travis.yml для .NET Core



Следующий шаг — добавление в репозиторий файла .travis.yml с настройками сборки. Для сборки проекта на .NET Core файл .travis.yml будет выглядеть примерно так:



language: csharp  
sudo: required  
dist: trusty  
mono: none
dotnet: 2.0.0-preview2-006497
before_script:
  - dotnet restore
script:  
  - dotnet test ./ThinkingHome.Migrator.Tests -c Release -f netcoreapp2.0


Давайте разберемся, что здесь написано:




  • mono: none — этот параметр задает версию Mono, которую нужно использовать для сборки. Т.к. мы собираем проект для .NET Core, выключаем Mono, чтобы не тратить время на инициализацию.

  • dotnet: 2.0.0-preview2-006497 — здесь мы задаем нужную нам версию .NET Core. Обратите внимание, нужно указывать версию SDK, а не версию Runtime.

  • before_script: — команды, которые нужно выполнить до начала сборки. У нас здесь пока только одна команда dotnet restore (установить необходимые пакеты из NuGet). Здесь можно написать несколько команд, каждую на отдельной строке.

  • script: — основные команды сборки. В нашем случае, это запуск тестов, которые находятся в проекте ThinkingHome.Migrator.Tests. При запуске будет использована конфигурация Release и целевой фреймфорк netcoreapp2.0. Опять же, если нужно выполнить несколько команд, пишем каждую на отдельной строке.



Перед тем, как коммитить файл с настройками в репозиторий, убедимся, что команды в разделах script и before_script локально выполняются без ошибок. После этого коммитим файл .travis.yml и пушим изменения на удаленный сервер.



git add .travis.yml  
git commit -m "Add travis config file"  
git push


Через несколько секунд видим, что Travis увидел наши изменения и запустил сборку. Вы можете посмотреть подробную информацию о выполнении сборки, в том числе всё, что было выведено в консоль. Видим, что был установлен .NET Core и запущены тесты.



Как настроить Travis CI для проекта .NET Core + PostgreSQL

Также видим, что тесты упали, т.к. они обращаются к БД, которая им недоступна.



Как настроить Travis CI для проекта .NET Core + PostgreSQL

Как настроить Travis CI для проекта .NET Core + PostgreSQL

Подключение PostgreSQL



Давайте подключим PostgreSQL в нашу сборку. Для этого добавим в .travis.yml раздел services с записью postgresql, а также добавим в раздел before_script команды для создания БД для тестов с помощью утилиты psql.



services:
  - postgresql
before_script:
  - psql -c "CREATE DATABASE migrations;" -U postgres
  ...


По умолчанию доступна БД postgres, к которой можно подключиться от имени пользователя postgres без пароля. Чтобы не зависеть от этих настроек по умолчанию, создадим для тестов отдельного пользователя и БД. Если нужно что-то сделать с новой БД, не забываем указывать её название в параметре -d.



Полный текст файла .travis.yml приведен ниже:



language: csharp  
sudo: required  
mono: none
dotnet: 2.0.0-preview2-006497
dist: trusty  
services:
  - postgresql
before_script:
  - psql -c "CREATE DATABASE migrations;" -U postgres
  - psql -c "CREATE USER migrator WITH PASSWORD '123';" -U postgres  
  - psql -c 'CREATE SCHEMA "Moo" AUTHORIZATION migrator;' -U postgres -d migrations  
  - dotnet restore
script:  
  - dotnet test ./ThinkingHome.Migrator.Tests -c Release -f netcoreapp2.0


Коммитим измененный файл и пушим на удаленный сервер. Тада!!! На этот раз тесты прошли успешно!



Как настроить Travis CI для проекта .NET Core + PostgreSQL

Заключение



Отлично! Мы разобрались, как настроить Travis CI для нашего проекта на .NET Core, использующего PostgreSQL. Теперь можем добавить в readme нашего проекта бирку, показывающую результат последнего билда с помощью сервиса Shields.io.



[![Travis](https://img.shields.io/travis/thinking-home/migrator.svg)](https://travis-ci.org/thinking-home/migrator)


Как настроить Travis CI для проекта .NET Core + PostgreSQL

Спасибо за внимание!



Источник: Хабрахабр

Категория: Программирование

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Добавление комментария

Имя:*
E-Mail:
Комментарий:
  • bowtiesmilelaughingblushsmileyrelaxedsmirk
    heart_eyeskissing_heartkissing_closed_eyesflushedrelievedsatisfiedgrin
    winkstuck_out_tongue_winking_eyestuck_out_tongue_closed_eyesgrinningkissingstuck_out_tonguesleeping
    worriedfrowninganguishedopen_mouthgrimacingconfusedhushed
    expressionlessunamusedsweat_smilesweatdisappointed_relievedwearypensive
    disappointedconfoundedfearfulcold_sweatperseverecrysob
    joyastonishedscreamtired_faceangryragetriumph
    sleepyyummasksunglassesdizzy_faceimpsmiling_imp
    neutral_faceno_mouthinnocent