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
中):
- 任务一(设置新变量):
steps:
- powershell: 'Write-Host "##vso[task.setvariable variable=testvar;]testvalue"'
displayName: 'set_variable'
- 任务二(从作用域获取变量):
steps:
- powershell: 'Write-Host $(testvar)'
displayName: 'print_variable'
这样您的变量就可以在同一作业执行下的所有任务中访问。
输出变量是一种在任务之间传递值的方式。如果您需要在 jobs
之间传递变量,只需使用 dependencies
和 output 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)
如果没有解决问题..这意味着我不明白你的用例。你能详细说明一下吗?
在这里您可以看到一些有用的文档。
检索任务的输出变量值。您需要为以下任务设置一个引用名称来引用输出变量。
例如:下载安全文件任务有一个输出变量(secureFilePath
)。为了让下面的任务引用它的输出变量。需要定义引用名称(例如 myFile
)。
然后在下面的任务中。您可以通过$(myFile.secureFilePath)
引用输出变量(secureFilePath
)
希望以上对您有所帮助!
我是可在 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
中):
- 任务一(设置新变量):
steps:
- powershell: 'Write-Host "##vso[task.setvariable variable=testvar;]testvalue"'
displayName: 'set_variable'
- 任务二(从作用域获取变量):
steps:
- powershell: 'Write-Host $(testvar)'
displayName: 'print_variable'
这样您的变量就可以在同一作业执行下的所有任务中访问。
输出变量是一种在任务之间传递值的方式。如果您需要在 jobs
之间传递变量,只需使用 dependencies
和 output 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)
如果没有解决问题..这意味着我不明白你的用例。你能详细说明一下吗?
在这里您可以看到一些有用的文档。
检索任务的输出变量值。您需要为以下任务设置一个引用名称来引用输出变量。
例如:下载安全文件任务有一个输出变量(secureFilePath
)。为了让下面的任务引用它的输出变量。需要定义引用名称(例如 myFile
)。
然后在下面的任务中。您可以通过$(myFile.secureFilePath)
secureFilePath
)
希望以上对您有所帮助!