我有一个用例,我想在pickList
我的任务组中添加一个 -type 参数。这似乎是可行的;UI 渲染良好,并且在使用任务组运行管道时变量也是正确的。我知道您不能直接将参数配置为选择列表,并且必须通过 JSON 手动完成。
然后我做了什么:
- 用我的任务和必要的变量创建了一个任务组。一切都很好,变量作为参数出现,
$(someType)
并且$(someValue)
. - 我希望
$(someType)
变量是pickList
- 我导出了所述任务组,从 JSON 中删除了与原始任务组的所有关系(id 和其他),将我的输入字段编辑为 typepickList
,并将必要的选项添加到options
-大批。 - 使用编辑后的值导入所述任务组。工作正常。在发布管道中使用它。工作得很好。
- 我在任务组中的一个脚本遇到问题,去编辑任务组。我一按保存,它会将所有参数转换为字符串,现在它显然已经坏了。
我已经包含了一个任务组的最小工作 JSON 示例,其中包含一个multiline
和pickList
类型参数。
{
"tasks":[
{
"environment":{
},
"displayName":"PowerShell Script",
"alwaysRun":false,
"continueOnError":false,
"condition":"succeeded()",
"enabled":true,
"timeoutInMinutes":0,
"inputs":{
"targetType":"inline",
"filePath":"",
"arguments":"",
"script":"Write-Host \"$(picklisttype)\"\nWrite-Host \"$(mlvalue)\"",
"errorActionPreference":"stop",
"failOnStderr":"false",
"showWarnings":"false",
"ignoreLASTEXITCODE":"false",
"pwsh":"false",
"workingDirectory":""
},
"task":{
"id":"e213ff0f-5d5c-4791-802d-52ea3e7be1f1",
"versionSpec":"2.*",
"definitionType":"task"
}
}
],
"runsOn":[
"Agent",
"DeploymentGroup"
],
"name":"my-task-group-with-picklist",
"version":{
"major":1,
"minor":0,
"patch":0,
"isTest":false
},
"iconUrl":"https://my-own-custom-image.com/images/icon.png",
"friendlyName":"My Task Group w/ PickList",
"description":"This task group contains a picklist. Awesome.",
"category":"Deploy",
"definitionType":"metaTask",
"author":"Myself",
"demands":[
],
"groups":[
],
"inputs":[
{
"aliases": [],
"options": {
"option1": "First option",
"option2": "Second option (default)",
"option3": "Third option"
},
"properties": {},
"name": "picklisttype",
"label": "Pick a type",
"defaultValue": "option2",
"required": true,
"type": "pickList",
"helpMarkDown": "Just pick a type!",
"groupName": ""
},
{
"aliases":[],
"options":{},
"properties":{},
"name":"mlvalue",
"label":"Write several lines",
"defaultValue":"This contains\nseveral lines\nof text.\nHowever, you it is\nquite small and it\nis not possible to alter\nits appearance...",
"required":true,
"type":"multiLine",
"helpMarkDown":"Write some awesome text.",
"groupName":"",
"visibleRule": "picklisttype != option3"
}
],
"satisfies":[
],
"sourceDefinitions":[
],
"dataSourceBindings":[
],
"instanceNameFormat":"Default name with default value $(picklisttype)",
"preJobExecution":{
},
"execution":{
},
"postJobExecution":{
}
}
如果您导入上述 JSON,将任务组添加到发布管道并运行它,您将看到它正确输出您从选择列表中选择的任何内容。
如果你然后去编辑任务组,一旦你保存它,它就会被破坏(将多行和选择列表转换为字符串类型)。
如果可以以任何方式实现(使用字符串类型以外的参数),任何人都有这方面的经验吗?