测试用简单的yaml文件替换令牌

问题描述 投票:0回答:1

我已经使用 MS 代理对简单的 yaml 文件进行了“替换令牌”测试。这是下面的 YAML:我已经使用了 MS 代理

所有任务都成功,但不确定为什么它没有被替换,并显示为 test02 它位于最后一个任务中,“文件替换后打印”''

rigger:

main
pool:
vmImage: ubuntu-latest

parameters:

name: TestSetting
default: testSet01
values:
testSet01
testSet02
testSet03
stages:

stage: A
jobs:

job: A1
steps:
task: Bash@3
displayName: 'Set variable'
inputs:
targetType: inline
script: |
echo 'The selected TestSetting is ${{ parameters. TestSetting }}.'
echo "##vso[task.setvariable variable=TestSettings_Name;] ${{ parameters. TestSetting }}"
task: Bash@3
displayName: 'Print file before replace'
inputs:
targetType: inline
script: 'cat $(System.DefaultWorkingDirectory)/appsettings.json'

task: Bash@3
inputs:
targetType: 'inline'
script: 'echo $(TestSetting_Name)'

task: Bash@3
inputs:
targetType: 'inline'
script: 'cat $(System.DefaultWorkingDirectory)/appsettings.json'

task: replacetokens@6
inputs:
root: '$(System.DefaultWorkingDirectory)'
sources: 'appsettings.json'

task: Bash@3
displayName: 'Print file after replace'
inputs:
targetType: inline
script: 'cat $(System.DefaultWorkingDirectory)/appsettings.json'

下面是需要替换的文件位置的图像:

在此输入图片描述

请指出以上可能有什么问题

我尝试了使用不同目录路径和不同文件名的几个选项,但没有任何效果

github azure-devops
1个回答
0
投票

代码中的错字

您有一个拼写错误 - 您正在设置

TestSettings_Name
变量,但您正在尝试使用
echo $(TestSetting_Name)
-
s
字母丢失。

建议的解决方法

而不是像这样设置变量:

echo "##vso[task.setvariable variable=TestSettings_Name;] ${{ parameters. TestSetting }}"

只需在管道或作业级别声明一个变量:

parameters:
  - name: TestSetting
    type: string
    default: testSet01
    values:
      - testSet01
      - testSet02
      - testSet03

variables:
  - name: TestSettings_Name
    value: ${{ parameters.TestSetting }}

steps:
  - task: Bash@3
    inputs:
      targetType: 'inline'
      script: 'echo $(TestSettings_Name)'
© www.soinside.com 2019 - 2024. All rights reserved.