Запуск сценария или исполняемого файла ps после развертывания

Я нахожусь в процессе преобразования нашего устаревшего процесса развертывания настраиваемой базы данных с настраиваемыми встроенными инструментами в полноценный проект SSDT. Пока все идет очень хорошо. У меня есть составные проекты, которые могут развертывать базовую базу данных, а также проекты, которые развертывают образцы и тестовые данные.

Проблема, с которой я сейчас сталкиваюсь, заключается в том, чтобы найти решение для запуска какого-то кода, который может вызывать веб-службу, чтобы получить код активации и добавить его в базу данных в качестве последнего шага процесса. Может ли кто-нибудь указать мне на крючок, который я мог бы использовать?

ОБНОВЛЕНИЕ: Для большей ясности я делаю это, чтобы упростить обслуживание и развертывание наших образцов и тестовых данных на локальном компьютере. Мы можем легко использовать Jenkins для активации сайтов, когда они каждую ночь развертываются в наших официальных тестовых средах. Я просто надеюсь, что смогу сделать это за один шаг, чтобы заменить самодельный инструмент развертывания базы данных, который мы используем сейчас.


person webwires    schedule 14.10.2016    source источник


Ответы (2)


В моем сценарии развертывания я обернул процесс развертывания базы данных в некоторые сценарии PowerShell, которые выполняют необходимые предварительные условия. Например:

  • запускается скрипт powershell, а затем он останавливает некоторые службы
  • затем он запускает sqlpackage.exe или заранее подготовленные сценарии развертывания sql
  • наконец, сценарий PowerShell запускает службы.

Вы можете передать некоторые параметры из PowerShell в сценарии sql или в sqlpackage.exe как переменные sqlcmd. Таким образом, вы можете сначала вызвать веб-службу, затем передать код активации как переменную sqlcmd и использовать эту переменную в сценарии после развертывания.

person scar80    schedule 15.10.2016
comment
Я собирался предложить нечто подобное. Возможно, вы сможете сделать это с помощью какого-то кода CLR или, возможно, конечной точки SSIS, но кажется, что проще сделать это в PowerShell. Я знаю, что есть люди, которые написали обертки PS для SSDT / SQLPackage / DacFX, поэтому следующий шаг в PS не должен быть таким уж плохим. - person Peter Schott; 16.10.2016
comment
Да, мне пришло в голову, что это было бы возможным решением. Я надеялся использовать функцию публикации непосредственно в VS, но это кажется следующим лучшим решением, поскольку публикация может не делать все, что мне нужно. - person webwires; 19.10.2016

В частности, если это последний шаг, я бы хотел сделать это отдельно, используя любой инструмент, который вы используете для развертывания: сценарии Powershell, msbuild, TFS, Jenkins, что угодно. Предположительно, есть также интерфейс какого-то описания, который предоставляется таким образом?

SSDT - это не eierlegende Wollmilchsau, это набор инструментов для управления изменениями базы данных.

Я подозреваю, что если бы последним шагом было, например, «предоставление экземпляра Google App Engine и развертывание сценария Python», это не было бы естественным кандидатом для включения в сценарий после развертывания SSDT, и я считаю, что это подпадает под той же категории.

person Gavin Campbell    schedule 18.10.2016
comment
Когда я говорю «развертывание», я имею в виду скорее локальное развертывание для разработчиков и тестировщиков. кто хочет протестировать локально. Мы можем использовать Jenkins для активации веб-сайта в наших тестовых средах. Я просто надеялся, что смогу сделать это за одно развертывание. - person webwires; 19.10.2016
comment
Вероятно, тогда стоит изучить варианты типов PowerShell. Я бы сказал, что это стоящая амбиция, чтобы сценарий локального развертывания был таким же, как и сценарий развертывания в производственной среде, хотя, чем больше раз он запускается, тем лучше. В качестве альтернативы есть способы вызова веб-службы из TSQL, но я не думаю, что какой-либо из них является особенно хорошей идеей. - person Gavin Campbell; 19.10.2016