【问题标题】:How do I pass list of url's into a variable value in Azure pipelines如何将 url 列表传递到 Azure 管道中的变量值
【发布时间】:2021-02-12 05:41:04
【问题描述】:

我的要求是将作为参数传递的 url 列表存储为变量,并将此变量传递到 (Google pagespeed)API url- 以获取 API 结果。

ex - https://www.googleapis.com/pagespeedonline/v5/runPagespeed?url=$(参数变量)&key=xyz

在 azure 管道中将 url 列表(空格分隔)作为参数值传递,如何将这些 url 存储到变量中?passing url's as parameter

我不熟悉正则表达式,尝试在下面设置浏览几个博客以验证 url 并将它们存储到变量中。我不断收到语法错误。

    regex=""(http|https)://)" 
    + “[a-zA-Z0-9@:%._\\+~#?&//=]{2,256}\\.[a-z]” 
    + "{2,6}\\b([-a-zA-Z0-9@:%._\\+~#?&//=]*)""
    echo ${{ parameters.pathsCsv }}
    echo $(Build.BuildNumber)
    
      if [[ ${{ parameters.pathsCsv }} =~ $regex ]]
            then
              appName="${BASH_REMATCH[1]}" # Get the sitename from the domain
              echo "##vso[task.setvariable variable=appName]$appName"
              
            else
              echo "${{ parameters.pathsCsv }} doesn't match expected URL pattern"
              exit 0
            fi
    
    echo "$(appName)"

【问题讨论】:

  • 很高兴知道您找到了解决方案。请标记您的答案,以便有相同问题的其他人更容易找到解决方案。

标签: bash parameters azure-devops google-api


【解决方案1】:

您可以尝试使用对象类型的参数并循环访问参数。例如:

parameters:
- name: Urls
  type: object
  values:
    - value

pool:
  vmImage: ubuntu-latest

steps:
- ${{ each parameter in parameters.Urls }}:
  - script: echo "##vso[task.setvariable variable=appName]${{ parameter }}"
  - script: echo $(appName)

script keyword 是命令行任务的快捷方式。该任务使用 Windows 上的 cmd.exe 和其他平台上的 Bash 运行脚本。 您可以在运行管道时提供这样的参数:

这是关于Loop through parameters的文档。

【讨论】:

  • 我想将作为参数提供的空格分隔的 url 存储到变量值中,然后打印出来。我没有默认 url 的列表,它们每次都会改变。这可能吗?
  • @saikumarreddy 请在答案中查看我的更新。您需要手动将 url 列表转换为正确的格式。是否满足您的需求?
  • @Wakter Qian-MSFT 这个答案符合我的需要。但这给了我语法错误步骤: - ${{ parameters.Urls 中的每个参数}}:
  • @saikumarreddy 很高兴知道它有帮助。如果管道成功运行,请忽略警告。感谢您将其标记为答案,这也将帮助社区中的其他人。
  • 由于这里的语法错误,无法运行管道步骤:-${{parameters.Urls 中的每个参数}}:,我们可以在 bash 任务中包含这些步骤吗?
【解决方案2】:

能够将网址存储到变量中并使用以下设置打印它们

步骤:

 - task: Bash@3
   inputs:
     targetType: 'inline'
     script: |
       IFS=' ' read -r -a url <<< "${{ parameters.pathUrls }}"
       #echo "${url[0]}"
       for pathUrls in "${url[@]}"
       do
           echo "$pathUrls"
       done

【讨论】:

    猜你喜欢
    • 2022-07-29
    • 2023-02-06
    • 2020-08-17
    • 2020-10-23
    • 1970-01-01
    • 2021-02-20
    • 2020-11-30
    • 1970-01-01
    • 2020-07-11
    相关资源
    最近更新 更多