在 bash 脚本中设置变量并在 Azure Pipelines 中的表达式中访问

Sam*_*Sam 5 bash azure-devops azure-pipelines-build-task azure-pipelines

我正在使用azure-pipelines.yml脚本来控制我的构建管道。

在一个任务中,我定义了一个 bash 脚本来为证书路径设置一些变量,具体取决于我们是为生产还是其他目的构建:

 steps:
  - bash: |
      echo "Building for $BUILD_SOURCEBRANCHNAME"
      if [ "$BUILD_SOURCEBRANCHNAME" = "production" ]; then
        echo "##vso[task.setvariable variable=configuration]Release"
        echo "##vso[task.setvariable variable=certificatesPath]${{ parameters.productionCertificatesPath }}"
      else
        echo "##vso[task.setvariable variable=configuration]Staging"
        echo "##vso[task.setvariable variable=certificatesPath]${{ parameters.stagingCertificatesPath }}"
      fi
    name: environmentVars
Run Code Online (Sandbox Code Playgroud)

然后如何在同一作业的后续构建步骤中访问表达式中的这些变量?我知道我可以像$(environmentVars.configuration)and一样访问它们$(environmentVars.certificatesPath),但是这种语法不适用于表达式。这是我尝试访问变量的地方:

signingProvisioningProfileFile: ${{ format('{0}/app.mobileprovision', <ACCESS VARIABLE HERE>) }}
Run Code Online (Sandbox Code Playgroud)

Sam*_*Sam 2

我的解决方案是将我想要的常量烘焙到变量的初始设置中,而不是稍后尝试对其进行格式化。例如:

echo "##vso[task.setvariable variable=certificatesPath]${{ parameters.productionCertificatesPath }}/app.mobileprovision"
Run Code Online (Sandbox Code Playgroud)