Azure DevOps YAML管道中Each循环内变量替换的语法问题
Azure DevOps YAML管道:在Each循环内替换变量中的占位符
正确实现方式
核心是在模板表达式上下文(${{ }})内完成替换操作,无需嵌套额外的表达式标记。以下是能正常输出myapp-ncus和myapp-scus的完整YAML代码:
trigger: branches: include: - develop variables: - name: regions value: ncus,scus - name: webAppName value: myapp-<region> stages: - stage: DeployToRegions jobs: - ${{ each region in split(variables.regions, ',') }}: - job: DeployTo_${{ region }} pool: vmImage: 'windows-latest' steps: - script: 'echo ${{ replace(variables.webAppName, ''<region>'', region) }}'
为什么之前的写法无效
你之前尝试的嵌套表达式写法${{ replace(variables[''webAppName''], ''<region>'', ${{ region }}) }}属于语法错误——因为已经处于${{ }}的模板表达式上下文里,直接引用循环变量region即可,不需要再额外包裹${{ }}。
可选优化:定义本地变量复用结果
如果多个步骤需要用到替换后的应用名称,可以在job级别定义一个本地变量,避免重复编写替换逻辑:
stages: - stage: DeployToRegions jobs: - ${{ each region in split(variables.regions, ',') }}: - job: DeployTo_${{ region }} variables: - name: resolvedWebAppName value: ${{ replace(variables.webAppName, ''<region>'', region) }} pool: vmImage: 'windows-latest' steps: - script: 'echo $(resolvedWebAppName)' # 其他需要用到应用名称的步骤直接引用 $(resolvedWebAppName) 即可
内容的提问来源于stack exchange,提问作者meyousikmann
相关产品推荐
相关产品推荐

