我有一个供多个管道使用的构建模板,我需要使用toLower来简单地转换参数。
这是我最后一次尝试:
parameters:
imageName: '$(Build.Repository.Name)'
lcImageName: "$[toLower(parameters.imageName)]" #this is my current attempt
后来,在Bash @ 3步骤上,我尝试将值用于
args: 'omitted/${{ parameters.lcImageName }}:$(output.dockertag)'
但我可以看到该值未展开
我还尝试在需要的地方直接调用它toLower,也没有扩展。
我只需要使用toLower转换一个参数并在特定步骤中使用它,我在这里问这个有点?异。
答案 0 :(得分:1)
这是一个执行现有答案所建议的示例(我认为除了使用脚本之外,没有其他方法可以这样做):
- bash: |
${{ format('imageName=$(echo "{0}" | tr "[:upper:]" "[:lower:]")
echo "##vso[task.setvariable variable=imageName]$imageName"',
parameters.solutionName ) }}
displayName: Image Lowercase
答案 1 :(得分:1)
在我们的管道中,它看起来像这样:
trigger:
- none
pr:
- 2.0.0-RC
variables:
registry: docker.sample.io
project: myProject
name: $(Build.SourceBranchName)
tag: $(Build.BuildNumber)
imageName: $(registry)/$(project)/$(echo "$(name)" | tr "[:upper:]" "[:lower:]"):$(tag)
jobs:
- job: build
displayName: Build
steps:
# Build da Imagem
- script: docker build --pull --rm -f Dockerfile -t $(imageName) .
displayName: Build Image
continueOnError: 'true'
输出
docker build --pull --rm -f Dockerfile -t docker.sample.io/tjf/2.0.0-rc:20200116.2 .
答案 2 :(得分:1)
无需任何解决方法! Azure DevOps Pipelines 中有一个函数(不是 lower
):
较低
toLower
答案 3 :(得分:0)
您已链接到Azure资源管理器文档,该文档适用于用于配置Azure资源的ARM模板。
但是您的语法看起来像您正在尝试在Azure DevOps的YAML管道中使用该函数吗?
Afaik,Azure DevOps Pipelines中没有可用的“ toLower”功能。
所有内置函数都使用顺序忽略大小写比较。
如果必须具有小写的lcImageName值,请创建一个以imageName作为参数并对其执行小写操作的powershell任务,然后将该返回值分配给新的管道变量。