azure-devops - 当作为复杂对象类型参数的一部分传递并与另一个对象合并时,无法识别 Devops yaml 字符串数组
问题描述
可以循环并打印作为参数传递给 Azure Devops Yaml 管道模板的数组中的字符串。您还可以遍历作为复杂对象的一部分传递的字符串数组,或者与另一个数组合并 - 但不能同时使用两者。
下面我有 2 个工作示例,然后是一个崩溃的示例。
工作示例#1
天蓝色部署.yml:
extends:
template: azure-deploy-template.yml
parameters:
complexObject:
- drink: 'water'
foods:
- 'apple'
- 'banana'
天蓝色部署模板.yml:
parameters:
- name: complexObject
type: object
jobs:
- job: TestJob
pool:
vmImage: 'ubuntu-latest'
steps:
- ${{ each o in parameters.complexObject }}:
- ${{ each f in o.foods }}:
- script: echo '${{convertToJson(f)}}'
- script: echo '${{f}}'
输出:
"apple"
apple
"banana"
banana
工作示例#2:
天蓝色部署.yml:
extends:
template: azure-deploy-template.yml
parameters:
animals:
- 'cat'
- 'dog'
complexObject:
- drink: 'water'
foods:
- 'apple'
- 'banana'
天蓝色部署模板.yml
parameters:
- name: animals
type: object
- name: complexObject
type: object
- name: foods
type: object
jobs:
- job: TestJob
pool:
vmImage: 'ubuntu-latest'
steps:
- ${{ each o in parameters.complexObject }}:
- ${{ each f in coalesce(parameters.foods, parameters.animals) }}:
- script: echo '${{convertToJson(f)}}'
- script: echo '${{f}}'
输出:
与#1 相同
问题案例
天蓝色部署.yml
extends:
template: azure-deploy-template.yml
parameters:
animals:
- 'cat'
- 'dog'
complexObject:
- drink: 'water'
foods:
- 'apple'
- 'banana'
天蓝色部署模板.yml
parameters:
- name: animals
type: object
- name: complexObject
type: object
jobs:
- job: TestJob
pool:
vmImage: 'ubuntu-latest'
steps:
- ${{ each o in parameters.complexObject }}:
- ${{ each f in coalesce(o.foods, parameters.animals) }}:
- script: echo '${{convertToJson(f)}}'
- script: echo '${{f}}'
这失败并出现错误: 无法从对象转换为字符串
如果我删除最后一行azure-deploy-template.yml
,则只有 json 输出。输出:
{
"lit": "apple",
"style": "",
"line": "13",
"col": "5",
"type": "0"
}
{
"lit": "banana",
"style": "",
"line": "13",
"col": "5",
"type": "0"
}
为什么字符串数组被解释为这个奇怪的复杂对象?
解决方案
推荐阅读
- swift - 如何仅在一个视图控制器上专门禁用向后滑动
- php - Laravel Forge 500 内部服务器错误
- http - 使用客户端请求发送 406 是否有效 HTTP 没有 Accept 标头
- python - 如何使用 django 片段中的小部件?
- beyondcompare4 - Beyond Compare 4 - 没有为差异显示适当的食物
- java - 搜索字符串列表(100 000 个字符串):如果有 %,如何搜索 x 字符
- sql - 从联合所有查询中计算重复项
- inno-setup - Inno Setup:排除所有带有扩展名的文件
- javascript - “哎呀!” 在 chrome 中上传大型目录的消息
- java - Spring Boot:每次请求过滤器->Servlet.service() 在路径 [] 的上下文中为 servlet [dispatcherServlet] 抛出异常