Установите SQL Server Express 2014 на агент онлайн-сборки visual studio - PullRequest
0 голосов
/ 01 мая 2018

Я пытаюсь установить экземпляр SQL Server 2014 Express на агент Visual Studio Online Build, однако, похоже, он застревает и время ожидания истекает через полчаса (я опробую его и использую бесплатную версию для в настоящее время).

В настоящее время я запускаю следующую PowerShell в начале сборки:

choco feature enable -n=allowGlobalConfirmation
choco install mssqlserver2014express --package-parameters='silentArgs:"/IACCEPTSQLSERVERLICENSETERMS /Q /ACTION=install /INSTANCEID=SQLEXPRESS /INSTANCENAME=SQLEXPRESS /UPDATEENABLED=FALSE /FEATURES=SQLENGINE"' -y

Устанавливается нормально локально и в AppVeyor, но зависает в VSO Build. Вот лог консоли, пока не истечет время ожидания:

Progress: 99% - Saving 311.7 MB of 311.73 MB
Progress: 100% - Completed download of C:\Users\VssAdministrator\AppData\Local\Temp\chocolatey\chocolatey\MsSqlServer2014Express\SQLEXPR.exe (311.73 MB).
Download of SQLEXPR.exe (311.73 MB) completed.
Hashes match.
C:\Users\VssAdministrator\AppData\Local\Temp\chocolatey\chocolatey\MsSqlServer2014Express\SQLEXPR.exe
Extracting...
Installing...
Installing MsSqlServer2014Express...

Я был бы рад услышать ответы, которые напрямую не решают проблему установки. Например, я нашел совет в другом месте , согласно которому вам не следует запускать интеграционные тесты на агенте сборки. Однако я не согласен с этим советом - у меня есть 1000 тестов базы данных, которые выполняются всего за 5 минут - и я предпочел бы провалить сборку, если эти тесты не пройдут, а не прогрессировать в конвейере сборки. Кроме того, я не хочу издеваться над базой данных - я использую Dapper, а не Entity Framework и хочу проверить, правильно ли мой код взаимодействует со схемой базы данных.

Я также видел совет, предлагающий вам настроить свой компьютер с предварительно установленным экземпляром SQL. Я бы предпочел не делать этого, поскольку у нас нет ресурса для настройки и обслуживания (применения исправлений безопасности и т. Д.) Компьютера. Я пробовал использовать SQL-сервер Azure, который, хотя и прост в обслуживании, занимает слишком много времени для создания новой базы данных. Кажется, что создание каждой базы данных занимает около 2 минут, а каждый тестовый запуск создает 20 баз данных.


Обновление Я попробовал образ докера microsoft / mssql-server-windows-express в AppVeyor и VSTS. AppVeyor завершает установку за ~ 6 минут, но VSTS занимает ~ 19 минут. Загрузка для обоих заняла ~ 4,5 минуты, поэтому я был бы рад использовать это в AppVeyor с кэшированием, но 19 минут - это слишком долго в VSTS. Кто-нибудь знает, как диагностировать узкое место в VSTS?

docker pull microsoft/mssql-server-windows-express
docker run -d -p 1433:1433 -e sa_password=sgddsgbhidjsghuisg -e ACCEPT_EULA=Y microsoft/mssql-server-windows-express

1 Ответ

0 голосов
/ 01 мая 2018

Установка SQL Server на размещенном агенте почти наверняка не будет работать. Размещенный агент предоставляется свежим при каждой сборке, а затем удаляется. Кроме того, он имеет ограниченный доступ для установки стороннего программного обеспечения.

Если поддержка среды тестирования интеграции не будет успешной, у вас есть несколько вариантов:

  1. Используйте localdb , который должен быть доступным на размещенном агенте.

  2. Контейнер ваши интеграционные тесты и запуск их в контейнере - объясняя, как именно работает Docker и как этого добиться, слишком много, чтобы вдаваться в подробности, но основная идея заключается в том, что вы создайте dockerfile, который определяет вашу среду SQL, соберите / запустите контейнер на размещенном агенте, запустите ваши тесты для контейнера, а затем выбросьте контейнер.

  3. Используйте экземпляр Azure SQL - опять же, слишком большой, чтобы вдаваться в подробности, но основной процесс заключается в том, что у вас будет шаблон ARM, который определяет ваш экземпляр SQL, вы будете запускать шаблон ARM для создания экземпляр SQL, разверните схему и данные в экземпляре SQL, запустите тесты, а затем удалите экземпляр SQL.

...