【问题标题】:Extension for Azure Devops and outputAzure Devops 和输出的扩展
【发布时间】:2020-04-24 14:32:41
【问题描述】:

我是可在 Azure Devops 中使用的私有自定义扩展的开发者。

我对我们扩展中 task.json 的输出有疑问,想知道您是否可以帮助澄清/解决问题。

1-什么有效。

我创建了一个包含 2 个步骤的版本: 第一步,执行我的扩展 第二步,检索输出变量(对不起任务的命名,我处于测试模式)

我们的 task.json 执行一个名为 vm.ps1 的脚本

在这个 vm.ps1 脚本中,我有一段代码来设置变量 $VirtualMachineId 的值:

然后使用发布的第二步 azure powershell 内联脚本检索此值:

结果显示在日志中:

我的价值被找回,目标完成。

2-什么不起作用:在task.json中实现

现在,如果我想在产品中完全实现这个变量,我需要在 task.json 的输出部分添加这个:

因此,我们界面的 UI 将显示在输出部分,如下例所示(请不要打扰看不到下图中的 VirtualMachineId,它是插图图像):

我在另一个版本中运行,正如我在扩展执行日志中看到的那样,变量设置了适当的值。

然后执行 Azure 内联脚本,值为 empty

要恢复: 如果我在任务 json 的输出部分声明变量,则无法检索到值或值为空。 这里有人知道我做错了什么吗?

感谢您花时间阅读我。

【问题讨论】:

    标签: azure-devops output azure-devops-extensions


    【解决方案1】:

    检索任务的输出变量值。您需要为以下任务设置一个引用名称以引用输出变量。

    例如:下载安全文件任务有一个输出变量 (secureFilePath)。为了下面的任务引用它的输出变量。需要定义引用名称(例如myFile)。

    然后在以下任务中。您可以通过$(myFile.secureFilePath)引用输出变量(secureFilePath

    希望以上有所帮助!

    【讨论】:

    • 您好,感谢您的帮助。我的一位同事向我指出了这个方向。您对我的问题的回答正确。
    【解决方案2】:

    这里是如何在任务之间传递变量的示例(在 adhoc scripting 中):

    1. 任务一(设置新变量):
    steps:
    - powershell: 'Write-Host "##vso[task.setvariable variable=testvar;]testvalue"'
      displayName: 'set_variable'
    
    1. 任务二(从作用域中获取变量):
    steps:
    - powershell: 'Write-Host $(testvar)'
      displayName: 'print_variable'
    

    这样,您的变量可以在同一作业执行下的所有任务中访问。

    输出变量是一种在任务之间传递值的方式。如果您需要在jobs 之间传递变量,只需使用dependenciesoutput variables

    在这里我做了一个示例阶段:

    • 包含 2 个工作 AB
    • 创建名为testvar的输出变量
    • 使用依赖项在阶段之间传递输出变量
    • 显示变量
    trigger:
    - master
    
    jobs:
    - job: A
      steps:
      - powershell: 'Write-Host "##vso[task.setvariable variable=testvar;isOutput=true;]testvalue"'
        displayName: 'set_variable'  
        name: "Setter"
    - job: B
      dependsOn: A
      variables:
        # map the output variable from A into this job
        varFromA: $[ dependencies.A.outputs['Setter.testvar'] ]
      steps:
      - script: echo $(varFromA)
    

    如果它不能解决问题.. 这意味着我不了解您的用例。你能详细说明一下吗?

    在这里您可以看到一些有用的文档。

    GitHub Notes Microsoft Notes

    【讨论】:

    • 感谢您抽出宝贵时间提供反馈。我能够设置输出变量并显示它们。问题是,当我将它们设置为我的扩展的 task.json 中的输出时,它们是空的:(换句话说,如果我理解正确,你就复制了我问题的“什么有效”部分:)
    猜你喜欢
    • 1970-01-01
    • 2020-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2019-07-10
    相关资源
    最近更新 更多