Skip navigation links
Блог лаборатории
Eugene Nourminsky
Dmitry Grechka
DreamSpark Premium
Проекты
Digital Workbook
Dynamic Data Display
Live@EDU на ВМК
Космические проекты
Мероприятия
Курсы
Семинар «Технологии разработки и анализа программ»
О лаборатории
Обратная связь
Categories
Archive
Тестирование Azure-сервисов в TFS Build
Categories: Visual Studio, Windows Server 2008, SQL Server, TFS

Сейчас явно прослеживается тренд на облачные вычисления. Не обошел он и нас стороной, и перед нами встала задача - разместить некоторые разрабатываемые службы в облаке. Естественно, перед публикакией, пусть даже и development, необходимо проверять результаты автоматических сборок.

0. На билд-машины был установлен VSCloudService из набора Azure SDK. Внутри каталога Windows Azure SDK находятся следущие файлы:

csrun.exe – непосредственно запускает эмулятор

\devstore\DSInit.exe – инициализирует локальное хранилище и выставляет права доступа для базы.

Для отработки тестов, надо предварительно инициализировать хранилище в локальном SQL Server на сборочной машине, а затем запустить Storage Emulator. Во многих форумах предлагается запускать их в методе AssemblyInitialize. Мы так и сделали.

На этом этапе мы столкнулись с проблемой, когда все тесты, требующие для своей работы StorageEmulator, отрабатывают локально, и благополучно валятся на сервере, выводя ошибку:

System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 127.0.0.1:10000

1. Естественно, начали грешить на закрытый порт. Открыли порт 10000 (именно он используется Storage Emulator’ом) на сборочных серверах для внутризонного подключения. Ошибки заменились другими:

Microsoft.WindowsAzure.StorageClient.StorageServerException: Server encountered an internal error. Please try again after some time. ---> System.Net.WebException: The remote server returned an error: (500)

Ну дела.

2. Поскольку удаленная отладка в данной ситуации – дело не самое простое, было решено проверить работоспособность компонентов отдельно. Оказалось, что добрые разработчики утилиты DSInit зачем-то сделали приложение оконным, что делает его запуст билдом невозможным, так как TFS Build работает в режиме сервиса, и UI-консоль ему не доступна.

Запускаем DSInit вручную для билд-аккаунта. Вот тут и выясняется основная ошибка – инициализатору не хватает прав сборочного аккаунта для выполнения операций настройки. Даем права sysadmin на SQL Server’е сборочной машины, запускаем – работает.

3. Самое замечательное. Правка Workflow-шаблона сборки проекта для запуска эмулятора.

В начале последовательности Try блока “Compile and Test” добавляем InvokeProcess параметрами:

FileName - "C:\Program Files\Windows Azure SDK\v1.3\bin\csrun.exe"

Arguments – “/devstore:start”

Сразу после рекомендуется поставить Delay в 5 секунд, чтобы эмулятор успел запуститься и выполнить все приготовления.

В последовательности Finally блока “Compile and Test” включаем тот же InvokeProcess, только с аргументом “/devstore:shutdown” для останова эмулятора.

Чекиним измененный BuildTemplate и теперь оно работает ;)

Ошибка аутентификации в домене
Categories: Active Directory, Windows Server 2008

Если:

  1. Active Directory домен живет под 2003 Mode
  2. Подсоединенный к домену сервер работает под Windows Server 2008
  3. Прописывать указанному в п.2 серверу явный dns-суффикс

То при попытке логина на машину (как с помощью локальной консоли, так и с помощью Terminal Services), вылезает ошибка:

“The security database on the server does not have a computer account for this workstation trust relationship.”

Так вот, знайте, надо убрать dns-суффикс.