我想将所有包递归地发布为 Azure DevOps 管道中 $(Build.ArtifactStagingDirectory) 文件夹中的通用包。因此,我循环遍历作为先前 bash 脚本的输出创建的用户定义变量。然后,我使用 UniversalPackages@0 任务通过 for 循环发布包。
- bash: |
#!/bin/bash
get_all_files=$(ls -Rp '$(Build.ArtifactStagingDirectory)' | grep -v /)
my_array=()
for OUTPUT in $get_all_files
do
file_name="${OUTPUT##*/}"
echo "File: $file_name"
my_array[${#my_array[@]}]=$file_name
done
my_array=${my_array[@]}
echo "##vso[task.setvariable variable=my_array;isOutput=true]$my_array"
displayName: 'Get the list of packages'
name: setVarStep
- bash: echo $(setVarStep.my_array)
displayName: 'List the packages'
- ${{ each item in '$(setVarStep.my_array)' }}:
- task: UniversalPackages@0
displayName: Universal Publish
inputs:
command: publish
publishDirectory: '$(Build.ArtifactStagingDirectory)'
vstsFeedPublish: 'my-feed'
vstsFeedPackagePublish: $(item)
packagePublishDescription: 'Publish package'
管道抛出以下错误。
需要一个序列或映射。实际值'$(setVarStep.my_array)'
看起来这不是使用在运行时定义的变量的正确方法。如何在 Azure DevOps 管道的 for 循环中使用定义的变量?