2016-08-14 1 views
8

Я внимательно следил за дизайн руководство нашел here, here и here, но я получаю эту ошибку PowerShell:TFS 2015,3 шаг настраиваемого построения не отправляет переменные в скрипт

Cannot process command because of one or more missing mandatory parameters: SourcePath FilePattern BuildRegex.

Соответствующие данные конфигурации находится ниже ,

Я проверил и дважды проверил, чтобы переменные присутствовали в моем файле task.json. Я также рассмотрел конфигурацию для других рабочих задач (например, VSBuild), и нет существенной разницы в объявлении переменной и синтаксисе синтаксиса PowerShell.

Что здесь может быть не так? Это очень простая архитектура - не так много сломать. Но, очевидно, что-то это делало.


От task.json:

"inputs": [ 
    { 
    "name": "SourcePath", 
    "type": "filePath", 
    "label": "Source path", 
    "defaultValue": "", 
    "required": true, 
    "helpMarkDown": "Path in which to search for version files (like AssemblyInfo.* files). NOTE: this is case sensitive for non-Windows systems." 
    }, 
    { 
    "name": "FilePattern", 
    "type": "string", 
    "label": "File pattern", 
    "defaultValue": "AssemblyInfo.*", 
    "required": true, 
    "helpMarkDown": "File filter to replace version info. The version number pattern should exist somewhere in the file(s). Supports minimatch. NOTE: this is casese sensitive for non-Windows systems." 
    }, 
    { 
    "name": "BuildRegEx", 
    "type": "string", 
    "label": "Build RegEx pattern", 
    "defaultValue": "\\d+\\.\\d+\\.\\d+\\.\\d+", 
    "required": true, 
    "helpMarkDown": "Regular Expression to extract version from build number. This is also the default replace RegEx (unless otherwise specified in Advanced settings)." 
    }, 
    { 
    "name": "BuildRegExIndex", 
    "type": "string", 
    "label": "Build RegEx group index", 
    "defaultValue": "0", 
    "required": false, 
    "helpMarkDown": "Index of the group in the Build RegEx that you want to use as the version number. Leave as 0 if you have no groups.", 
    "groupName": "advanced" 
    }, 
    { 
    "name": "ReplaceRegEx", 
    "type": "string", 
    "label": "RegEx replace pattern", 
    "defaultValue": "", 
    "required": false, 
    "helpMarkDown": "RegEx to replace with in files. Leave blank to use the Build RegEx Pattern.", 
    "groupName": "advanced" 
    }, 
    { 
    "name": "ReplacePrefix", 
    "type": "string", 
    "label": "Prefix for replacements", 
    "defaultValue": "", 
    "required": false, 
    "helpMarkDown": "Prefix for the RegEx result string.", 
    "groupName": "advanced" 
    }, 
    { 
    "name": "ReplaceSuffix", 
    "type": "string", 
    "label": "Suffix for replacements", 
    "defaultValue": "", 
    "required": false, 
    "helpMarkDown": "Suffix for the RegEx result string.", 
    "groupName": "advanced" 
    }, 
    { 
    "name": "FailIfNoMatchFound", 
    "type": "boolean", 
    "label": "Fail if no target match found", 
    "defaultValue": "false", 
    "required": false, 
    "helpMarkDown": "Fail the build if no match is found for the replace RegEx in the target file(s).", 
    "groupName": "advanced" 
    } 
], 
"execution": { 
    "PowerShell3": { 
    "target": "VersionAssembly.ps1" 
    } 
} 

От VersionAssembly.ps1:

[CmdletBinding()] 
param(
    [string][Parameter(Mandatory=$True)][ValidateNotNullOrEmpty()] $SourcePath, 
    [string][Parameter(Mandatory=$True)][ValidateNotNullOrEmpty()] $FilePattern, 
    [string][Parameter(Mandatory=$True)][ValidateNotNullOrEmpty()] $BuildRegex, 
    [string]$BuildRegexIndex, 
    [string]$ReplaceRegex, 
    [string]$ReplacePrefix, 
    [string]$ReplaceSuffix, 
    [string]$FailIfNoMatchFound, 
    [string]$BuildNumber = $ENV:BUILD_BUILDNUMBER 
) 
+0

@ScottLangham: Что вы натолкнули на версию с/на? См., В частности, документацию по [Версия задачи] (https://docs.microsoft.com/en-us/vsts/build-release/concepts/process/tasks#task-versions), которая гласит: «* Когда новый несовершеннолетний версия версии (например, от 1,2 до 1,3), ваша сборка или релиз будет автоматически использовать новую версию. Однако, если выпущена новая основная версия (например, 2.0), ваша сборка или релиз будет продолжать использовать основную версию, которую вы указанном до тех пор, пока вы не отредактируете определение и не измените его вручную. * « – eggyal

+0

Я пробовал как мелкие, так и патч-поля в версии. –

+0

@ScottLangham - На данный момент я настраивал пользовательские задачи в сторону, но если я возобновляю усилия и найду исправление для этого, я отправлю его вам. – InteXX

ответ

5

Видимо, я не следовал достаточно близко ... Я пропустил предупреждение о this page:

Words of warning

Tasks can be versioned, use this to your advantage. All build definitions use the latest available version of a specific task, you can’t change this behavior from the web interface, so always assume the latest version is being used.

If you don’t change the version number of your task when updating it, the build agents that have previously used your task will not download the newer version because the version number is still the same. This means that if you change the behavior of your task, you should always update the version number!

Как только я понял, что все выпрямилось, все сработало нормально.

2

Возможно, примеры, принимающие входы в разделе параметров, устарели. Похоже, теперь вам нужно использовать команды Vsts-task-lib из сценария PowerShell для получения входных параметров.

[CmdletBinding()] 
param() 

$myParam = Get-VstsInput -Name myParam -Require 

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

  • Нет связанных вопросов^_^