我已经使用 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'
下面是需要替换的文件位置的图像:
请指出以上可能有什么问题
我尝试了使用不同目录路径和不同文件名的几个选项,但没有任何效果
您有一个拼写错误 - 您正在设置
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)'