Azure管道模板-参数的toLower

时间:2019-09-17 12:56:23

标签: azure-devops azure-pipelines

我有一个供多个管道使用的构建模板,我需要使用toLower来简单地转换参数。

toLower在此处https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-template-functions-string#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转换一个参数并在特定步骤中使用它,我在这里问这个有点?异。

4 个答案:

答案 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):

<块引用>

较低

  • 将字符串或变量值转换为所有小写字符
  • 最小参数:1.最大参数1
  • 返回字符串的小写形式
  • 示例:lower('FOO') 返回 foo

~from MS docs

示例

toLower

答案 3 :(得分:0)

您已链接到Azure资源管理器文档,该文档适用于用于配置Azure资源的ARM模板。

但是您的语法看起来像您正在尝试在Azure DevOps的YAML管道中使用该函数吗?

Afaik,Azure DevOps Pipelines中没有可用的“ toLower”功能。

https://docs.microsoft.com/en-us/azure/devops/pipelines/process/expressions?view=azure-devops#functions

所有内置函数都使用顺序忽略大小写比较。

如果必须具有小写的lcImageName值,请创建一个以imageName作为参数并对其执行小写操作的powershell任务,然后将该返回值分配给新的管道变量。