Azure 管道模板 - 参数上的 toLower

qwe*_*oyo 14 azure-devops azure-pipelines

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

toLower 记录在此处 https://learn.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 转换参数并在特定步骤中使用它,我有点惊讶我在这里问这个。

Jos*_*hua 33

无需任何解决方法!Azure DevOps Pipelines 中有一个函数(不是):lowertoLower

\n
\n

降低

\n
    \n
  • 将字符串或变量值转换为全部小写字符
  • \n
  • 最小参数: 1. 最大参数 1
  • \n
  • 返回字符串的小写等效项
  • \n
  • 示例: lower(\'FOO\') 返回 foo
  • \n
\n

~来自 MS 文档

\n
\n

例子

\n

\xe2\x9d\x97 请注意,下面的第一个示例使用编译时评估。感谢@marc-stevenson 在评论中指出这一点(以及分享链接以了解更多信息)!

\n
# using compile-time evaluation\nparameters:\n- name: someString\n  type: string\n  default: "HELLO"    \n\nvariables:\n   A: ${{ lower(parameters.someString) }}\n\nsteps:\n  - script: echo $A # outputs hello\n
Run Code Online (Sandbox Code Playgroud)\n
# using run-time evaluation\nparameters:\n- name: someString\n  type: string\n  default: "HELLO"    \n\nvariables:\n   A: $[ lower(parameters.someString) ]\n\nsteps:\n  - script: echo $A # outputs hello\n
Run Code Online (Sandbox Code Playgroud)\n

  • 甜的!就像一个魅力——这需要成为公认的答案! (2认同)
  • 请注意,${{ <表达式> }} 是编译时评估,而 $[ <表达式> ] 将为您提供运行时评估。编译时对于静态值来说很好,而您需要使用运行时来获取更动态的值。请参阅此处:https://learn.microsoft.com/en-us/azure/devops/pipelines/process/expressions?view=azure-devops (2认同)