如何在 Azure DevOps yaml 管道中的每个循环中使用变量

2024-01-27

我的 Azure DevOps 管道中有一个 PowerShell 脚本:

- task: PowerShell@2
  displayName: Get_records
  inputs:
    targetType: 'inline'
    script: |
        <...>
        $records.Records

$records.Records是一些包含记录数组的变量。我需要以这种方式使用这些数据:对于该数组中的每条记录,我需要在一项作业中执行多项任务。像这样的事情:

stages:
- stage: stage_1
  jobs:
  - job: Job_1

    - task: PowerShell@2
      displayName: Get_records
      inputs:
        targetType: 'inline'
        script: |
          <..getting this records..>
          $records.Records

    - ${{each records in variables.records.Records}}:

      - task: not_powershell
        displayName: name1
        inputs:
          AsyncOperation: true
          MaxAsyncWaitTime: '60'
    
      - task: not_powershell
        displayName: name2
        inputs:
          AsyncOperation: true
          MaxAsyncWaitTime: '60'

我怎样才能做到这一点?对此有几个问题:

  1. 如何在 foreach 循环中使用 '$records.Records' 变量?使用前必须保存变量吗?如果是 - 如何保存数组?
  2. 如果不可能以这种方式做到这一点,可能有一些方法,例如使用多个阶段、作业...等?

不,你不能。它只适用于参数 https://learn.microsoft.com/en-us/azure/devops/pipelines/process/runtime-parameters?view=azure-devops,不是变量:

您可以使用each关键字循环遍历参数 https://learn.microsoft.com/en-us/azure/devops/pipelines/process/expressions?view=azure-devops#each-keyword

这是因为:

  • 在运行之前,会解析 yaml 并compiled https://learn.microsoft.com/en-us/azure/devops/pipelines/process/runs?view=azure-devops#process-the-pipeline进入管道结构,定义了所有阶段、作业和任务。这是评估循环条件的点,并且循环扩展到多个阶段/作业/任务。
  • 在编译时尚不可用,因此此时不能使用它们来定义each循环。
  • 在运行时,当动态变量可用时,管道结构已经固定,因此此时不可能添加额外的任务。

解决方法

You can't循环管道中的动态数组变量;但有一个地方你can这样做是在一个任务内,例如在一个powershell脚本 https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/utility/powershell?view=azure-devops:

- task: PowerShell@2
  displayName: Loop Over Records
  inputs:
    targetType: 'inline'
    script: |
      # first, get the records
      ForEach ($record in $records.Records) {
        # do something with $record
      }

这不像管道循环那么强大,可以使用所有不同类型的非 powershell 任务,但它可能是循环该数组的唯一方法。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Azure DevOps yaml 管道中的每个循环中使用变量 的相关文章

随机推荐

  • Air for Android:设备警报后黑屏

    我确实有一个问题 而且没什么可继续的 我即将在三星应用商店上发布一个应用程序 使用 Air for Android As3 创建 并且刚刚得到了一份问题列表 在该应用程序经过三星工作人员测试后 才能发布该应用程序 我确实解决了几乎所有问题
  • Map和Reduce之间的主要区别

    我使用了这两种方法 但我对这两种方法的用法感到很困惑 有什么吗map可以做但是reduce不可以 反之亦然 注意 我知道如何使用这两种方法 我想知道这些方法之间的主要区别以及我们何时需要使用 Source http www globalne
  • OpenJDK 11:在 Linux 上获取 ClassNotFound,在 Windows 上运行良好

    我们有一个基于桌面的 swing 应用程序 可以在 Oracle JDK 1 8 上正常运行 迁移到 OpenJDK 11 后 我们遇到了一些未找到的类异常com sun java swing Painter 我们通过生成一个包含一些类的捆
  • 有没有办法在redis中获取客户端IP?

    我进行了网络搜索 但没有找到任何相关内容 我正在集群上运行redis 并且想找出哪台机器正在连接到redis 特别是当没有机器应该连接 但redis仍然说某些机器已连接时 提前致谢 使用 MONITOR 只会显示实际向 Redis 发送流量
  • mysql 小数点四舍五入

    我是 mysql 的新手 需要一些基本的东西 我需要像这样四舍五入小数 21 4758 应该是 21 48 0 2250 应为 0 22 23 0850 应为 23 08 22 9950 应该是 22 99 我尝试了很多事情但没能成功 Th
  • 在Python中处理从源目录到目标目录的一组文件

    Being 全新的在 python 中 我试图对 python 中的一组文件运行命令 该命令需要源文件和目标文件 我实际上使用的是 imagemagickconvert如下例所示 我可以提供源目录和目标目录 但是我不知道如何轻松保留从源目录
  • 为什么允许使用子类的构造函数实例化父类对象?

    考虑以下 public class parent int x parent x 5 public class child extends parent int y child super y 10 public static void ma
  • Android Rss 图片问题

    大家好 我对 Android 开发比较陌生 正在为新闻网站创建 RSS 阅读器 我遇到的问题是我想要获取图像的 rss feed 的网站的类型为 我为 android 上的代码所做的是 2 个类 RssItem 和 RssItem Disp
  • 浏览器选项卡之间的通信

    我有一个 HTML 页面 文件主要 html 使用 JavaScript 在同一域中打开一个新选项卡window open 新标签页 html method 在新选项卡中 用户可以通过单击按钮来结束其活动 此时 我想向开启者窗口发送一条消息
  • php/mysql账户激活

    我的新网站中的所有内容都工作正常 除了我无法让这段代码工作 query mysql query SELECT FROM members WHERE useremail useremail row mysql fetch assoc quer
  • 将二进制编码为音频 python 或 C

    使用C或Python 首选Python 我如何将二进制文件编码为音频 然后通过耳机插孔输出 以及如何使用麦克风插孔的输入将音频解码回二进制 到目前为止我已经学会了如何使用 python 将文本文件转换为二进制文件 这与 RTTY 通信类似
  • 在 WinCrypt 中使用 CertCreateCertificateContext 时遇到 ASN1 错误标记值

    我在这里做错了什么 创建证书上下文时 我不断收到错误 0x8009310b 满足 ASN1 错误标记值 我知道我正在测试的证书很好 我使用 DER Base 64 和 P7B 格式从中间存储中导出它 三种情况都失败 int tmain in
  • 在 UIImageView 中对 UIImage 进行向上和向下动画(就像悬停一样)循环

    您好 我有一个图像 我想上下移动 向上 10 像素和向下 10 像素 以便我的图像看起来悬停 我怎样才能用简单的动画来做到这一点非常感谢 您可以使用核心动画来对视图层的位置进行动画处理 如果您将动画配置为additive您不必费心计算新的绝
  • 如何将开发人员工具窗口恢复到正常配置?

    我有 Edge 95 0 1020 53 在 Win 10 Pro 21H1 中 我不是技术人员 没有什么具体原因 我打开了开发者工具 大约有 10 年没有打开过 打开后 我看到了我见过很多次的配置 使用整个窗口四分之三的父网页位于左侧 这
  • 在 Swashbuckle 中启用 Oauth2 客户端凭据流

    我使用 IdentityServer3 通过客户端凭据授予来保护 Web API 对于文档 我使用 Swashbuckle 但无法弄清楚如何在 SwaggerConfig 中为客户端凭据 应用程序 流程启用 Oauth2 任何帮助 将不胜感
  • Winforms/C#:在两次运行之间存储/检索(保留)文本框的内容

    有没有一种最简单的方法来简单地告诉 Winforms 主要是 TextBoxes 保留其所有内容G 到一个文件 而无需我循环遍历所有控件 我在 WPF 应用程序中看到了这一点 但我不知道 而且 Google 没有发现任何内容 是否有开箱即用
  • 检查python中目录的权限

    我想要一个给定目录的python程序 它将返回该目录中具有775的所有目录 rwxrwxr x 权限 thanks 这两个答案都不会重复 尽管尚不完全清楚这就是OP想要的 这是一种递归方法 未经测试 但您明白了 import os impo
  • 在 tkinter 中,有没有办法改变重叠画布的绘制堆栈顺序?

    问题 使用 Python 的 tkinter 我尝试通过扩展来创建自定义按钮和其他小部件画布小部件 http effbot org tkinterbook canvas htm when to use 当用户与它们交互时 如何更改在顶部绘制
  • Content-type 中的边界被 FormHttpMessageConverter 覆盖

    我在 Spring 框架中使用 FormHttpMessageConverter 为了通过restTemplate发送文件 我在项目中添加了FormHttpMessageConverter 问题是服务器获取文件询问我的加密内容类型的字符串
  • 如何在 Azure DevOps yaml 管道中的每个循环中使用变量

    我的 Azure DevOps 管道中有一个 PowerShell 脚本 task PowerShell 2 displayName Get records inputs targetType inline script lt gt rec