Выполняйте сборку только в том случае, если в проекте Azure есть изменения в проекте или зависимостях. - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть несколько проектов в одной папке, каждый из которых создает микросервис.Каждый имеет отдельный конвейер сборки и выпуска.В настоящее время каждый проект настроен так, чтобы запускаться, когда код фиксируется в своей собственной подпапке.В настоящее время я нахожусь в процессе добавления некоторого общего кода, который используется в некоторых проектах.Я бы хотел, чтобы микросервис создавался и развертывался, если в нем используется изменяемая библиотека.

Каков наилучший способ добиться этого?

В идеале я представляю что-то вроде этого: Buildзадача, которая запускается в корневом каталоге -> Используйте MsBuild, чтобы определить, нужно ли строить проект, проверив его зависимости -> Build / Abort.

Возможно ли это?

1 Ответ

0 голосов
/ 12 февраля 2019

Если вы хотите поделиться кодом в исходной форме и используете проекты .NET Framework, лучший (но не оптимальный) подход, который я нашел, - это разместить проекты в одной папке и поместить общий код в подпапку, котораяВы включаете в оба проекта.Поместить общий код в папку за пределами корневой папки проекта еще хуже.

Наилучший подход (IMO) - делиться кодом в скомпилированной (Dll) форме (а не в исходной форме): вы можетесоздайте DLL с общим кодом, упакуйте ее в пакет NuGet и опубликуйте пакет NuGet в некотором внутреннем репозитории NuGet (например, вы можете использовать функцию Артефакты Azure DevOps в качестве репозитория NuGet для вашей организации).Проекты, которым требуется общий код, делают это через ссылки NuGet.Преимущество состоит в том, что общий код в форме Dll / NuGet может быть версионирован (не все проекты должны обновляться одновременно для несовместимых изменений), он может использовать собственный конвейер CI с юнит-тестами, он может использовать свой конвейер CD для публикациив хранилище Артефактов и т. д.

Я переключился с первого подхода на второй.Гораздо чище ИМО.

...