CruiseControl.Net: уведомляем о билдах по Skype

от автора

Наверное, многие используют такой замечательный опен-сорсный проект CruiseControl.net для реализации практики разработки ПО, называемой «непрерывная интеграция». О том, как его настроить, есть много статей, в том числе и на хабре: тыц, тыц и тыц. После сборки «особых» билдов часто стоит задача уведомления получателей об этом событии, для чего чаще всего используется инструмент CCTray или встроенный Task “email” – я же хочу поделиться туториолом о том, как сделать собственный плагин task на примере посылке сообщения по Skype.

Skype4COM

Нынче с установкой Skype на ваш компьютер попадает эта библиотека (уже зарегистрированная через regsvr32 и лежит, как правило, в C:\Program Files (x86)\Common Files\Skype ). Всё, что нужно сделать, чтобы начать работать со Skype программно — это создать проект и на вкладке Add reference\COM найти «Skype4COM Type Library 1.0” и добавить. Далее следует код:

Skype = new Skype(); Skype.Attach(6, true); //здесь вы должы в открытом skype разрешить выполнение Skype.SendMessage(“%skype.name%”, “hello!”);

CC.NET Plugin

Для того, чтобы написать плагин, достаточно всего лишь зареференсить несколько сборок
image
и отнаследоваться от TaskBase (либо реализовать ITask).

[ReflectorType("skype")]     public class SkypeTask : TaskBase     {         [ReflectorProperty("recipients")]         public string Recipients { get; set; }          [ReflectorProperty("message")]         public string Message { get; set; }                  private static readonly Skype Skype = null;          static SkypeTask()         {             Skype = new Skype();             Skype.Attach(6);         }          protected override bool Execute(IIntegrationResult result)         {             Skype = new Skype();             Skype.Attach(6, true);              if (result.Status == IntegrationStatus.Unknown) return false;             result.BuildProgressInformation.SignalStartRunTask(!string.IsNullOrEmpty(Description) ? Description : "Skyping ...");              foreach (var recipient in Recipients.Split(new[] { ";" }, StringSplitOptions.RemoveEmptyEntries))             {                 if (!string.IsNullOrEmpty(Message))                 {                     Skype.SendMessage(recipient, Message);                 }             }             return true;         }     }

Это пример самой простой реализации задачи (не забудьте на билд-сервере поставить скайп, завести отдельную учетку и добавить в контакты нужных людей).
После сборки плагина (я собирал с TargetFramework=3.5) его необходимо положить в папку с плагинами, которая по-умолчанию находится в папке server и перезапустить сам сервис CC.NET.
Теперь откроем конфигурацию нашего проекта и добавим такую строку

<skype Message=”Hi, here is a new build of ${Project.Name} ${Project.Version} that can be found here: ${Build.Path}” Recipients=”user1;user2;user3;”/>

И при следующей сборке билда мы получим уведомление по Skype с ссылкой на сам билд (это может быть FTP или etc).

Заключение

Вот так быстро можно написать плагины для CC.NET, больше информации о том, как расширить CC.NET можно найти на соответствующем ресурсе. Для примера, я хотел ещё реализовать посылку самого билда через Skype, но к сожалению не нашёл как (можно только инициировать открытие диалога выбора файла).

PS: Если есть интерес — могу более подробно рассказать о том, как настроить CruiseControl.NET + Git + Jira + тестирование на эмуляторе (для Windows Phone).

ссылка на оригинал статьи http://habrahabr.ru/post/166809/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *