【问题标题】: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
        

        刚刚发现情况总是如此。有时它会再次失败,只是频率非常低。

        【讨论】:

          猜你喜欢
          • 2018-09-02
          • 2011-03-19
          • 2012-09-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-03-24
          相关资源
          最近更新 更多