То, что я пытаюсь сделать, - это настроить определения сборки так, чтобы сборка Web Api строила только проект Web Api. Завершит ли он или выдает ошибку, пусть сборка продолжается как обычно.
Это тот случай, когда вам нужно определение сборки, нацеленное на файл проекта вместо .sln
. Ваша ошибка в том, что для построения .csproj
требуется, чтобы у свойства OutputPath было значение, поэтому просто добавьте его в поле MSBuild Arguments : /p:OutputPath="$(build.binariesDirectory)\MyProject"
. Build.BinariesDirectory является предопределенной переменной, но в противном случае не является обязательным значением каталога. Вы можете использовать то, что имеет для вас смысл.
Я хочу, чтобы проект Node.js собирал как Web Api, так и проект Node.js, чтобы в случае сбоя сборки Web Api не работала вся сборка, даже если Node.js не потерпел бы неудачу.
Самый простой и наименее сложный способ
Из того, что я понимаю о вашей ситуации, в этом случае не требуется никаких дополнительных изменений. Если вы создадите решение, то конвейер потерпит неудачу, если один из проектов будет сорван. Недостатки этого:
- Проект Node.js не «получает» последние изменения в «зависимости» веб-API, пока проект Node.js не будет изменен и CI не запустит сборку
- Если вы используете триггер завершения сборки для уменьшения недостатка 1 выше, проект Web API создается дважды, хотя мы знаем, что он должен быть успешным оба раза
Более сложный и изощренный (но элегантный?) Способ
Установите Триггер завершения сборки в конвейере Node.js, который будет запускать сборку при успешном конвейере Web API. Это похоже на то, что у вас сейчас, с некоторыми отличиями. После завершения сборки и запуска CI в вашем конвейере Node.js сборка Web API может завершиться успешно независимо от результата нижестоящего Node.js, но вы будете создавать проект Node.js, даже если в этот проект не внесены изменения. в явном виде. (Возможно, это не то, что вам нужно, если вы пытаетесь сэкономить на активности агента)
Ваш конвейер Node.js может иметь 2 отдельных этапа сборки, каждый из которых нацелен на один из файлов проекта. Тем не менее, шаг для сборки проекта Web API может иметь условие , которое НЕ выполняется, если Build.Reason равно BuildCompletion . Это позволяет Node.js быть нижестоящим проектом Web API, но не создает Web API, если мы уже знаем, что он успешен.
Примечание: в зависимости от того, как ваши ссылки работают между этими проектами в этом решении, вам может понадобиться добавить другие задачи для загрузки артефактов сборки и что-то, чтобы убедиться, что все находится там, где должно быть для сборки.