Azure Pipeline产品名含短横杠致阶段报错,求条件替换方案
解决Azure Pipeline阶段名称中短横杠替换为下划线的问题
你不需要额外的条件判断,直接使用编译时的replace函数即可解决问题,该函数对不含短横杠的产品名称也能正常工作(返回原字符串,不会报错)。
问题根源
你之前的写法错误使用了运行时表达式($[]),但阶段名称属于流水线的静态结构,必须在编译阶段就确定,因此需要用编译时表达式(${{ ... }})来处理。另外运行时表达式中嵌套${{ product }}的语法不合法,这也是报错的原因之一。
正确的YAML代码
parameters: - name: product type: object - name: component type: string - name: configuration type: string stages: - ${{ each product in parameters.product }}: - stage: ${{ replace(product, '-', '_') }}_build
说明
replace(product, '-', '_')会将产品名称中的所有短横杠-替换为下划线_;- 如果产品名称中没有短横杠,该函数会直接返回原名称,不会产生任何错误;
- 编译时表达式会在流水线启动前完成解析,确保阶段名称符合Azure Pipeline的命名规则(仅允许字母、数字、下划线)。
内容的提问来源于stack exchange,提问作者Barak Stein
相关产品推荐
相关产品推荐

