如何在Azure DevOps Pipeline中编写if else条件

2024-02-19

我有一个天蓝色的管道并使用参数运行,其中有多个选项,如下所示:

选择测试执行

  • Product
  • 产品与成本
  • 带附件的产品

如果我选择Product然后我执行product.js文件,如果我选择Product with Cost然后执行"productCost.js"等等。我编写了一个天蓝色管道脚本来执行此操作。我还有一个条件"Generate Test Data"返回布尔值的复选框true or false如果值为true然后我必须选择一个文件productWithTestData.js if Product被选中了-我不知道怎么写if elseAzure 管道代码中的条件。请找到我的伪代码

有人可以帮助我如何为我的用例编写 if else 条件 - 提前感谢您的帮助!谢谢!

variables:
  - name: fileName
    ${{ if eq(parameters.selectTestRun, 'Product') }}:
      value: 'product.js'
    else ${{ if eq(parameters.selectTestRun, 'Product') } && { if eq(parameters.testData, True) }}:   
      value: 'productWithTestData.js'

我的管道代码:

trigger:
  none

parameters:

- name: selectTestRun
  displayName: Select test execution
  type: string
  default: Product
  values:
  - Product
  - Product with Cost
  - Product with Attachments

- name: testData
  displayName: Generate Test Data
  type: boolean
  default: false

variables:
  - name: fileName
    ${{ if eq(parameters.selectTestRun, 'Product') }}:
      value: 'product.js'
    ${{ if eq(parameters.selectTestRun, 'Product with Cost') }}:
      value: 'productCost.js'
    ${{ if eq(parameters.selectTestRun, 'Product with Attachments') }}:
      value: 'productAttachment.js'      
  
jobs:
  - job: testJob
    pool:
      vmImage: ubuntu-latest
    displayName: Run sample tests
    steps:
      - task: Bash@3
        displayName: Test variable
        inputs:
          targetType: inline
          script: |
            echo "Hello world"
            echo ${{variables.fileName}}
                

更新:2021 年 9 月 9 日

现在我们还有 if else 条件可用: https://learn.microsoft.com/en-us/azure/devops/release-notes/2021/sprint-192-update#new-yaml-conditional-expressions

variables:
  ${{ if eq(parameters.os, 'win') }}:
    testsFolder: windows
  ${{ elseif eq(parameters.os, 'linux' }}:
    testsFolder: linux
  ${{ else }}:
    testsFolder: mac

所以我们可以写

variables:
  - name: fileName
    ${{ if eq(parameters.selectTestRun, 'Product') }}:
      value: 'product.js'
    ${{ elseif eq(parameters.selectTestRun, 'Product with Cost') }}:
      value: 'productCost.js'
    ${{ elseif eq(parameters.selectTestRun, 'Product with Attachments') }}:
      value: 'productAttachment.js'   
    ${{ else }}:
      value: 'something-else.js' 

原回复

你应该使用notIn https://learn.microsoft.com/pl-pl/azure/devops/pipelines/process/expressions?view=azure-devops#notin本例中的表达式:

variables:
  - name: fileName
    ${{ if eq(parameters.selectTestRun, 'Product') }}:
      value: 'product.js'
    ${{ if eq(parameters.selectTestRun, 'Product with Cost') }}:
      value: 'productCost.js'
    ${{ if eq(parameters.selectTestRun, 'Product with Attachments') }}:
      value: 'productAttachment.js'   
    ${{ if notIn(parameters.selectTestRun, 'Product', 'Product with Cost', 'Product with Attachments') }}:
      value: 'something-else.js' 

在这种情况下,您需要每次都重复此操作,如下所示:

 ${{ if and(eq(parameters.selectTestRun, 'Product'), ne(parameters.testData, True)) }}:
      value: 'product.js'
 ${{ if and(eq(parameters.selectTestRun, 'Product'),eq(parameters.testData, True)) }}:
      value: 'productWithTestData.js'

其他 if 也一样。

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

如何在Azure DevOps Pipeline中编写if else条件 的相关文章

  • Azure Functions v3 /HTTP 触发函数:限制请求正文和 URL 大小

    我想看看如何限制最大请求长度 and 最大允许内容长度使用 HTTP 触发器和 Azure Functions v3 创建的 API 中的属性 使用 Net core 应用程序 3 1 我尝试过使用网络配置刚刚被忽略的文件 预期 但我不确定
  • 提供数组作为 devops 管道的参数

    我刚刚开始使用天蓝色管道 我们希望不再使用arm模板和参数文件手动部署Azure资源 而是使用devops管道来完成此任务 虽然使用单个模板 参数的 json 文件来完成此操作很简单 但我看不到处理多个文件的明智方法 我已经看到有关使用数组
  • 如何使用 C# 为 azure devops 变量赋值

    我有 selenium C 测试脚本 可以从浏览器获取令牌 我有两个 azure devops 任务 一个用于执行 selenium 测试 另一个用于执行 API 测试 我想将 selenium 测试获取的令牌传递给 API 测试执行任务
  • 如何在 Azure DevOps 发布管道中保存测试结果

    在发布管道期间 我将启动 Selenium 测试 如果这些测试失败 则会进行屏幕截图 我正在寻找一种上传它们的方法 以便我可以查看它们并检查出了什么问题 我设法将它们压缩 但不幸的是 所有上传方法都不适用于发布管道 有没有办法在发布管道期间
  • 使用搜索模式 '...\**\TEST-*.xml 找不到测试结果文件

    我正在 TFS Nunit 加带有适配器的 Visual Studio 中运行测试 并且我已设置构建定义如下 构建成功但没有生成测试结果文件 TFS 是否写入此 Xml 文件 日志 2017 02 08T08 08 40 8151428Z
  • 运行顺序构建管道作为 Azure Devops 中拉取请求分支策略的一部分

    我在 Azure Devops 中有两个管道 管道 A 在提交到 master 时触发并生成一组工件 管道 B 在管道 A 成功完成后触发并消耗其工件 只要正常提交到 master 这一切都可以正常工作 但是 如果我创建一个分支验证策略 强
  • 以编程方式将工作项关联到拉取请求

    我可以得到 https www visualstudio com en us docs integrate api git pull requests get a pull request https www visualstudio co
  • 标签上的 Azure Pipeline 触发器

    我正在制作两条管道 其中之一将在 Dev 和 Master 分支上的 PR 上触发 另一个仅用新标签触发 所以对于第一个 我有触发器 pr master dev 第二个 trigger tags include exclude master
  • 无法对嵌套资源执行请求的操作。找不到父资源“****.io”

    我想在我的应用服务上设置新的 DNS 记录 在我的发布管道中的部署步骤之后 我已对其进行格式化以便于阅读 New AzDnsRecordSet Name e e staging ZoneName e d io ResourceGroupNa
  • 将 Github 分叉到 AzureDevops

    我想将 github 存储库分叉到 AzureDevOps 中 同时保留 AzureDevOps 中的功能 以按照在 github 中分叉存储库的方式不断从 github 中提取更改 这是否可行 在路线图上吗 我想将 github 存储库分
  • 通过 Nuke.Common/NuGet.CommandLine 部署 NuGet 包时如何通过 Azure Auth

    我正在尝试通过 Azure DevOps 上的 Nuke 和 CI CD 自动执行 NuGet 包更新 一切都构建得很好 但在 PushNuGet 步骤中 该过程尝试通过弹出窗口向 Azure 进行身份验证 这显然从未在 in devops
  • VSTS 任务组 Powershell 参数

    我使用具有四个参数的 Azure Powershell 任务内联脚本创建了 VSTS 任务组 我已将此任务组添加到发布定义并配置参数 当我尝试释放时失败并出现以下错误 2018 03 23T10 28 42 2811600Z 错误 在 C
  • 使用天蓝色管道和诗歌,有什么方法可以避免在每个脚本中采购 ~/.poetry/env ?

    我目前使用下面的脚本来构建我的包并将其发布到私有 Azure Artifacts 源 在每个脚本中 我都必须运行该行source HOME poetry env或者找不到诗歌命令 有没有办法消除这种重复 完整脚本 trigger maste
  • 已安装 cypress npm 软件包,但缺少 Cypress 二进制文件

    大家好 我是 azure devops CI 的新手 我正在尝试通过在作业之间缓存 node modules 来减少管道构建时间 但我遇到了无法解决的错误 我正在使用 cypress 进行测试 这是我的天蓝色管道 Node js Build
  • vsts-npm-auth 无法在 VSTS 构建上获取身份验证令牌

    我正在尝试使用vsts npm auth https www npmjs com package vsts npm auth获取 VSTS 包存储库的身份验证令牌 在我的开发机器上我可以运行命令 npm install g vsts npm
  • 验证 azure-devops PAT

    我已经从 azure devops 创建了一个 PAT 现在我已经创建了一个 React 应用程序来处理所有 api 逻辑 我现在有一个登录屏幕 用户需要输入 DEVOPS TOKEN ORGANISATION NAME 我如何在登录时验证
  • Visual Studio Team Services 持续集成:NuGet 恢复任务失败

    我正在使用 Team Services 中的持续集成功能 以前是 Visual Studio Online 我的构建定义针对解决方案 而不是整个解决方案 中的特定项目 即 ClientUI MVC 网站 该解决方案包含三个项目 Client
  • AzDo 同时拉入 2 个不同的远程/目标分支

    我们有2个分行 Master 发展 Development总是等于Master并部署直到Non Prd环境和功能基于Development分支 因此 当 PRD 中出现错误并需要修复时 我们会在 PRD 之外创建一个新分支Master并将其
  • 触发 Azure Devops 项目中存在的另一个构建

    我有一个名为A 其构建管道为azure pipelines yml然后我有另一个名为B其构建管道为azure pipelines yml Both A and B属于同一个项目ProjectA 这是流程 repo A build gt re
  • 发布管道中的 Azure DevOps 日志记录命令

    我试图通过在任务中设置一些环境变量来自定义管道版本的输出 我找到了以下链接 然而这似乎不起作用 我所做的只是创建一个具有单个任务 bash 或 PS 的管道 并通过任务的内联版本声明链接中指定的命令 有人已经成功地使这些命令起作用了吗 我做

随机推荐