如何将 url 的列表传递到 Azure 管道中的变量值

How do I pass list of url's into a variable value in Azure pipelines

我的要求是将 url 的列表作为参数存储为变量并将该变量传递给 (Google pagespeed)API url-一个一个得到API个结果。

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

我正在传递 url 的列表(Space 分隔)作为 azure 管道中的参数值,如何将这些 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)"

你可以尝试使用object类型的参数,循环遍历参数。例如:

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 存储到变量中并使用以下设置打印它们

步数:

 - 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