Azure Devops 和输出的扩展

Extension for Azure Devops and output

我是可在 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,我无法检索值或值为空。 这里有人知道我做错了什么吗?

感谢您花时间阅读我的文章。

以下是如何在任务之间传递变量的示例(在 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 个职位 A & B
  • 创建名为 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

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

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

然后在下面的任务中。您可以通过$(myFile.secureFilePath)

引用输出变量(secureFilePath

希望以上对您有所帮助!