Запускать задачи выпуска выборочно на основе изменений кода проекта

Мы используем VSTS для управления сборкой и выпуском и используем CI/CD. Как правило, наши решения состоят из проекта веб-приложения и проекта базы данных.

Наши текущие задачи по выпуску переводят приложение в автономный режим (с помощью app_offline.htm), публикуют базу данных, а затем публикуют веб-приложение. Публикация проекта базы данных часто не приводит к изменениям, поскольку из-за CI / CD мы гораздо чаще обновляем код в веб-приложении, чем изменяем схему БД.

Есть ли способ запустить задачу публикации базы данных (используя WinRM), только когда она обнаружит изменение в коде проекта базы данных в нашем git-репозитории?

РЕДАКТИРОВАТЬ: Это само по себе не является проблемой, так как обычно, когда DACPAC публикуется, не будет никаких действий. ОДНАКО, я запрашивал резервное копирование базы данных с использованием флага /p:BackupDatabaseBeforeChanges=true, который, похоже, создает резервную копию базы данных, даже если нет никаких изменений. Это проблема для больших баз данных.

2 ответа

Решение

Ответ - то, что я хочу, не возможно.

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

  1. Создать новое определение сборки
  2. Включить непрерывную интеграцию на вкладке Триггеры
  3. Укажите фильтр Path, чтобы включить проект базы данных
  4. Изменить задачу Visual Studio Build, указать /t:[database project name] аргумент в поле MSBuild Arguments, чтобы просто построить проект базы данных
  5. Те же шаги для веб-проекта
  6. Создать новое связанное определение
  7. Добавьте артефакты для двух предыдущих определений сборки и включите триггер непрерывного развертывания.
  8. Добавьте две среды (например, базу данных, сеть)
  9. Открыть условия перед развертыванием среды (например, базы данных)
  10. Включите фильтры артефактов и выберите соответствующий артефакт (например, артефакт построения базы данных), укажите ветвь сборки (можно указать *значит все ветки)
  11. Добавьте задачи, чтобы просто развернуть базу данных в этой среде
  12. Те же шаги для веб-среды
Другие вопросы по тегам