我有一个Azure DevOps管道
pool:
vmImage: 'windows-latest'
variables:
System.Debug: true
one: actual-value
Two: actual-value
MappedValue: actual-value
steps:
- task: FileTransform@2
displayName: V2 - Transform
env:
Three: actual-value
four: actual-value
five: $(MappedValue)
Six: $(MappedValue)
inputs:
folderPath: ./
jsonTargetFiles: settings.json
xmlTargetFiles: ''
xmlTransformationRules: ''
- pwsh: "Get-ChildItem Env:"
- publish: settings.json
artifact: settings.json
和以下设置.json文件
{
"one":"default",
"two":"default",
"three":"default",
"four":"default",
"five":"default",
"six":"default"
}
现在我希望文件转换任务能够替换设置文件中的所有值,但实际上只有";一个";被替换。
注意事项:
- ONE和TWO设置为env变量,如列表所示
- settings.json中只有一个被替换,但有两个没有
- 二被定义为Pascal大小写,但在设置文件中是小写
- 在列出的env变量中,one和Two都以大写形式出现
- 三个、四个、五个和六个映射到任务环境变量
- 映射的变量也不会在设置中进行转换
所以我的问题是,转换任务能够替换设置文件中的值的规则是什么?为什么只有一个有效,没有其他有效,即使它们被映射到env变量都是大写的?
替换是基于管道变量而不是环境变量完成的。
看看这个:
pool:
vmImage: 'windows-latest'
variables:
System.Debug: true
one: actual-value
two: actual-value
MappedValue: actual-value
three: $(MappedValue)
four: actual-value
five: $(MappedValue)
Six: $(MappedValue)
steps:
- task: FileTransform@2
displayName: V2 - Transform
inputs:
folderPath: ./
jsonTargetFiles: settings.json
xmlTargetFiles: ''
xmlTransformationRules: ''
- pwsh: "Get-ChildItem Env:"
- publish: settings.json
artifact: settings.json
我得到了:
{
"one": "actual-value",
"two": "actual-value",
"three": "actual-value",
"four": "actual-value",
"five": "actual-value",
"six": "default"
}
Beacuse替换区分大小写,未替换six
。