Запускать задачи выпуска выборочно на основе изменений кода проекта
Мы используем VSTS для управления сборкой и выпуском и используем CI/CD. Как правило, наши решения состоят из проекта веб-приложения и проекта базы данных.
Наши текущие задачи по выпуску переводят приложение в автономный режим (с помощью app_offline.htm), публикуют базу данных, а затем публикуют веб-приложение. Публикация проекта базы данных часто не приводит к изменениям, поскольку из-за CI / CD мы гораздо чаще обновляем код в веб-приложении, чем изменяем схему БД.
Есть ли способ запустить задачу публикации базы данных (используя WinRM), только когда она обнаружит изменение в коде проекта базы данных в нашем git-репозитории?
РЕДАКТИРОВАТЬ: Это само по себе не является проблемой, так как обычно, когда DACPAC публикуется, не будет никаких действий. ОДНАКО, я запрашивал резервное копирование базы данных с использованием флага /p:BackupDatabaseBeforeChanges=true, который, похоже, создает резервную копию базы данных, даже если нет никаких изменений. Это проблема для больших баз данных.
2 ответа
Простой способ заключается в том, что вы можете разделить веб-проект и проект базы данных на два определения сборки.
- Создать новое определение сборки
- Включить непрерывную интеграцию на вкладке Триггеры
- Укажите фильтр Path, чтобы включить проект базы данных
- Изменить задачу Visual Studio Build, указать
/t:[database project name]
аргумент в поле MSBuild Arguments, чтобы просто построить проект базы данных - Те же шаги для веб-проекта
- Создать новое связанное определение
- Добавьте артефакты для двух предыдущих определений сборки и включите триггер непрерывного развертывания.
- Добавьте две среды (например, базу данных, сеть)
- Открыть условия перед развертыванием среды (например, базы данных)
- Включите фильтры артефактов и выберите соответствующий артефакт (например, артефакт построения базы данных), укажите ветвь сборки (можно указать
*
значит все ветки) - Добавьте задачи, чтобы просто развернуть базу данных в этой среде
- Те же шаги для веб-среды