我找到了很多关于在Azure管道中使用EACH循环的例子,但我发现所有这些例子都使用参数作为数组。如果使用在代码中创建的数组呢?我的意思是:
- script: COMMAND=$(npx nx affected:apps --base=$(BASE_SHA) --head=$(HEAD_SHA) --plain) && echo "##vso[task.setvariable variable=APPLICATIONS;]$COMMAND"
- task: Bash@3
inputs:
targetType: 'inline'
script: |
echo 'APPLICATIONS + $(APPLICATIONS)'
readarray -d ' ' -t ARRAYAPPS <<<'$(APPLICATIONS)'
echo ${ARRAYAPPS[0]}
echo ${ARRAYAPPS[1]}
- ${{each APPLICATION in $APPLICATIONS }}:
- task: ...
Pipeline${{each
不支持运行时管道变量。它只支持参数,因为每个在编译时求值;在那个时候,只有参数(以及基于参数的变量)是可用的。
"如果你被阻止了,试着改变这种方式"我修改了这种方法,并在bash脚本中包含了循环:
readarray -d ' ' -t ARRAYAPPS <<<$(APPLICATIONS)
if (( ${#APPLICATIONS[@]} > 0 )); then
for (( i=0; i<${#APPLICATIONS[@]}; i++ ));
...