【问题标题】:Setting pipeline variable contains extraneous double or single quote设置管道变量包含无关的双引号或单引号
【发布时间】:2020-07-14 19:28:53
【问题描述】:
我有以下命令在 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) 放在引号内或引号外,那么问题仍然存在。我该如何解决这个问题?是什么原因造成的?
【问题讨论】:
标签:
azure-devops
continuous-integration
azure-pipelines
【解决方案1】:
要在 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 变量将不包含引号。
【解决方案2】:
改用 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"
【解决方案3】:
我遇到了类似的问题。
我们最近更改的唯一内容是将池映像更改为 ubuntu-latest。
在此更改之后,问题随机出现,但并非总是如此。
发现托管映像 ubuntu-18.04 不再存在错误的引用:
pool:
vmImage: ubuntu-18.04
刚刚发现情况总是如此。有时它会再次失败,只是频率非常低。