如何将参数从azure管道传递到shell脚本?

use*_*883 4 linux azure azure-pipelines

我正在尝试将参数从 Azure 管道传递到 shell 脚本。shell脚本正在执行,但是参数没有传过来。这是管道任务:

- task: AzureCLI@2
  inputs:
    azureSubscription: 'our-subscription'
    scriptType: 'bash'
    scriptLocation: 'scriptPath'
    scriptPath: 'Path/to/shellscript/cli.sh'
    arguments: 
    addSpnToEnvironment: 
      ${{ variables.appVersion }}
      ${{ variables.bNumber }}
Run Code Online (Sandbox Code Playgroud)

这是 cli.sh 的一些内容

appVersion=$1
buildNo=$2    
echo printing values:
echo appVersion= "$appVersion"
echo buildNo= "$buildNo"
Run Code Online (Sandbox Code Playgroud)

这是管道任务内的一些日志

printing values: 
appVersion=  
buildNo=  
D:\a\1\s\path\to\shellscript\cli.sh: line 72: wget: command not found
Run Code Online (Sandbox Code Playgroud)

另请注意,wget 命令也未被识别。我缺少什么?

Ia1*_*Ia1 6

“addSpnToEnvironment”的用法是将您选择的 Azure 终结点的服务主体 ID 和密钥添加到脚本的执行环境中。

addSpnToEnvironment 访问脚本中的服务主体详细信息 (可选)将您选择的 Azure 终结点的服务主体 ID 和密钥添加到脚本的执行环境中。您可以在脚本中使用以下变量:$env:servicePrincipalId、$env:servicePrincipalKey 和 $env:tenantId。仅当 Azure 端点具有服务主体身份验证方案时才会遵循此默认值: false

在您的任务中,您尝试通过此属性传递变量,该属性在语法上无效,您可以执行以下操作来实现您正在寻找的结果:

为了快速测试,我将您的脚本作为内联脚本传递,而不是传递脚本路径。

variables:
- name: appVersion
  value: 1.0
- name: bNumber
  value: $(Build.BuildNumber)
steps:
- task: AzureCLI@2
  inputs:
    azureSubscription:'<subscription>'
    scriptType: 'bash'
    scriptLocation: 'inlineScript'
    inlineScript: |
      #!/bin/sh
      appVersion=$1
      buildNo=$2    
      echo printing values:
      echo appVersion= "$appVersion"
      echo buildNo= "$buildNo"
    arguments: '${{ variables.appVersion }} ${{ variables.bNumber }}'
Run Code Online (Sandbox Code Playgroud)

管道输出:

printing values:
appVersion= 1.0
buildNo= 20220223.16
/usr/bin/az account clear
Finishing: AzureCLI
Run Code Online (Sandbox Code Playgroud)