设置管道变量包含无关的双引号或单引号

Setting pipeline variable contains extraneous double or single quote

我有以下命令在 Azure DevOps yaml 中设置 BASE_URL 变量:

- script: |
    echo "##vso[task.setvariable variable=BASE_URL;]$(PROD-CONTAINER-URL)"
  condition: and(succeeded(), eq(variables['Build.SourceBranchName'], 'master'))

然而,每当我回显变量时,它看起来像这样:

https://google.com"

如果我将其替换为单引号或将 $(PROD-CONTAINER-URL) 放在引号内或引号外,问题仍然存在。我该如何解决这个问题?是什么原因造成的?

改用 powershell 已修复。一定是 bash 我不知道的转义问题:

- powershell: |
    Write-Host "##vso[task.setvariable variable=BASE_URL;]$(TEST-CONTAINER-URL)"
  condition: and(succeeded(), eq(variables['Build.SourceBranchName'], 'develop'))
  displayName: "Initialize test base url variable"

要解决 Bash 脚本中的这个问题,您需要删除双引号或单引号。

steps:
- script: |
     echo ##vso[task.setvariable variable=BASE_URL;]$(PROD-CONTAINER-URL)
  displayName: 'Run a one-line script'

- script: |
    echo $(BASE_URL)

那么 BASE_URL 变量将不包含引号。

我遇到了类似的问题。 我们最近更改的唯一内容是将池图像更改为 ubuntu-最新。 更改后问题随机出现,但并非总是如此。

发现托管图像 ubuntu-18.04 不再存在错误的引用:

  pool: 
  vmImage: ubuntu-18.04

才发现原来总是这样。有时它会再次失败,只是频率非常低。