2016-04-12 4 views
3

Сборка задач vNext - это потрясающее улучшение по сравнению с предыдущим процессом сборки. Один недостаток заключается в том, что я не могу сделать некоторые задачи условными. Я могу создать дополнительную сборку для каждой комбинации, но это явно плохо масштабируется и вызывает много дополнительной работы, если нам нужно изменить какую-то другую часть сборки.Вызов Build vNext task напрямую

Вместо этого я предпочел бы иметь возможность писать собственные задачи PowerShell, которые могут вызывать существующие задачи построения. Существует по крайней мере один недостаток этого (если никакая сборка не запрашивает специально для vso-задачи, агент сборки не будет ее загружать), но учитывая, что мы используем локальные TFS и агенты сборки, я могу жить с этим.

Я пытался сделать что-то вроде следующего:

$path = get-item "$env:AGENT_HOMEDIRECTORY\Tasks\NuGetPackager\0.1.56\NuGetPackager.ps1" 
& "$path" -searchPattern $searchPattern -outputDir "$packageFolder" -configurationToPackage $configurationToPackage -nugetAdditionalArgs "$nugetAdditionalArgs -version $nugetVersion" 

К сожалению, это приводит следующее сообщение об ошибке:

2016-04-12T09:50:22.3652811Z ##[error]import-module : Could not load file or assembly 'Microsoft.TeamFoundation.DistributedTask.Agent.Interfaces, 
2016-04-12T09:50:22.3652811Z ##[error]Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find 
2016-04-12T09:50:22.3652811Z ##[error]the file specified. 
2016-04-12T09:50:22.3652811Z ##[error]At C:\Agent1\Tasks\NuGetPackager\0.1.56\NuGetPackager.ps1:19 char:1 

Теперь один решение, которое я нашел в Интернете показывает, что я мог бы добавить искал dlls к GAC, но я действительно, действительно не хочу. Также ясно, что задачи работают очень хорошо при вызове из TFS напрямую, поэтому какая конфигурация мне не хватает?

Я попытался добавить папку, содержащую DLL, к пути и даже вызвать SetDllDirectory явно в PowerShell, но ни одна из них не поможет.

Окружающая среда: Windows Server 2012 R2 как для агента сборки, так и для сервера TFS. Обновление TFS 2015 1.

ответ

3

Задача Powershell Хост, используемый агентом сборки для платформы RTM до 2015 года, является настраиваемым хостом, который делает креативные вещи для решения сборок и обработки ввода/вывода. Эти задачи нельзя вызывать извне агента.

Кроме того, с помощью Node реализовано немало задач построения, поэтому вам нужно будет определить, какой из них и как их вызывать.

Задачами построения являются migrated to a new vsts-task-lib, которые будут поддерживать вызов вне агента. Они позволят точно, что вы хотите.

В то же время вы можете выполнять существующие задачи (в большинстве случаев это простой манифест плюс скрипт) и добавить один параметр string в задачу, в которую вы вставляете переменную, которую затем можно рассматривать как условие. Вам нужно будет заменить все стандартные задачи. Затем нажмите их снова. если вы сохраните ExtensionID и GUID задачи одинаково, они будут действовать как замены на месте. Это, вероятно, самый простой способ сделать то, что вы хотите, без необходимости выполнять всевозможные хаки, которые забирают пользовательский интерфейс Task. Просто установите номер версии на что-то смехотворно выше, например 100.0.1.83. таким образом, вы всегда будете использовать свою версию.

Примечание: новые сборки должны быть повторяемыми, поскольку они вызывают одну и ту же сборку несколько раз, они всегда дают одинаковые результаты. условные действия могут быть зафиксированы в пользовательских сценариях powershell, которые хранятся в контроле источника. Они могут выполняться как часть рабочего процесса.

+0

Строки обязательно должны быть повторяемыми, никаких аргументов нет. Условные действия - это все последствия того, что какая-либо переменная сборки задана для определенных значений. Адаптация задач, безусловно, будет самым простым решением, я просто беспокоюсь о нежелательных побочных эффектах при обновлении. Я предполагаю, что до тех пор, пока я просто увеличиваю малую версию сборки, это вряд ли вызовет проблемы (что я должен исправлять обновленные задачи после установки SP, ясен, но допустим). – Voo

+0

При обновлении до обновления TFS 2015 2 вы можете публиковать задания с использованием расширения. Он будет включать все стандартные задачи сборки. который просто позволит вам удалить расширение, создать новую версию своего расширения со всеми задачами, а затем опубликовать новую версию собственного расширения на сервере. Пока GUID задач сборки одинаковый, самая высокая версия всегда будет побеждать. Поэтому я бы выбрал гораздо более высокую версию. Таким образом, вы всегда уверены, что ваша задача называется. – jessehouwing

+0

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

Смежные вопросы