首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AzureDevops阶段dependsOn stageDependencies

AzureDevops阶段dependsOn stageDependencies
EN

Stack Overflow用户
提问于 2022-04-13 08:38:41
回答 2查看 800关注 0票数 1

如何根据从参数派生的阶段/作业名称创建多阶段管道,而阶段首先并行运行,最后是等待前所有阶段的一个阶段?

到目前为止,我尝试过的是:一个多阶段的管道运行几个阶段,依赖于并行的工具参数,而dependsOn是作为参数传递的。对于等待所述工具的前一阶段的每个工具,并行运行该工具可以顺利地工作。

主模板:所有等待所有人

代码语言:javascript
复制
- ${{ each tool in parameters.Tools }}:
  - template: ../stages/all-wait-for-all.yml
    parameters:
      Tool: ${{ tool }}

各阶段/所有等待.all

代码语言:javascript
复制
parameters:
  - name: Tool
    type: string
stages:
  - stage: ALL_WAIT_${{ parameters.Tool}}
    dependsOn:
    - PREPARE_STAGE
    - OTHER_TEMPLATE_EXECUTED_FOR_ALL_TOOLS_${{ parameters.Tool }}

现在应该有一个阶段应该只运行一次,而不是每个工具,但它应该只在完成单个工具阶段之后运行。它不能硬编码,因为有各种各样的工具。因此,我希望在准备工作中确定个人等待阶段会得到解决:

主要模板:准备阶段

代码语言:javascript
复制
    - script: |
        toolJson=$(echo '${{ convertToJson(parameters.Tools) }}')
        tools=$(echo "$toolJson" | jq '.[]' | xargs)
        stage="ALL_WAIT"

        for tool in $tools; do
          stageName="${stage}_${tool }"
          stageWaitArray+=($stageName)
        done

        echo "##vso[task.setvariable variable=WAIT_ON_STAGES]${stageWaitArray}"
        echo "##vso[task.setvariable variable=WAIT_ON_STAGES;isOutput=true]${stageWaitArray}"
      displayName: "Define wait stages"
      name: WaitStage

阶段/等待所有的.one

代码语言:javascript
复制
stages:
  - stage: ONE_WAITS
    dependsOn:
    - $[ stageDependencies.PREPARE_STAGE.PREPARE_JOB.outputs['waitStage.WAIT_ON_STAGES'] ]

而下面显示的错误是:Stage ONE_WAITS depends on unknown stage $[ stageDependencies.PREPARE_STAGE.PREPARE_JOB.outputs['WaitStage.WAIT_ON_STAGES'] ].

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-20 06:21:02

我想我想的太多了,因为最终它是很明显的。

因此,第一个模板可以在主模板的循环中调用,而它的执行次数与我们获得的工具一样多。第二个模板应该在等待所有工具的前一个阶段时调用,而作业/阶段前缀是已知的,只有后缀的工具名是未知的。因此,只需将它们直接添加到dependsOn中的循环中即可。

给你:

代码语言:javascript
复制
stages:
  - stage: ONE_WAITS
    dependsOn:
    - PREPARE_STAGE
    - ${{ each tool in parameters.Tools }}:
      - OTHER_TEMPLATE_EXECUTED_FOR_ALL_TOOLS_${{ tool}}
      - ALL_WAIT_${{ tool }}
票数 0
EN

Stack Overflow用户

发布于 2022-04-13 16:11:32

据我所知,无法在运行时对动态$[]或宏$()表达式进行计算。可以使用在队列时计算的模板表达式${}。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71854424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档