【问题标题】:Setting a result from task in an azure pipeline variable在 azure 管道变量中设置任务结果
【发布时间】:2021-07-02 16:16:17
【问题描述】:

我在我的天蓝色管道中设置了一个,它通过 Azure CLI 创建了一个 Redis 缓存实例。 之后运行的另一个任务是从名为“CacheConnectionKey”的管道变量中选择设置我的应用程序配置文件中的值。

我必须在管道中手动设置变量值。我想通过在上述两者之间添加一个新任务来自动化这个过程。新任务应该从 Redis 缓存实例中获取 PrimaryKey 并设置管道变量中的值(即 CacheConnectionKey)。

我在 power shell 中尝试过一个命令,它给了我访问密钥:

Get-AzRedisCacheKey -ResourceGroupName "MyResourceGroup" -Name "MyCacheKey"
PrimaryKey        : pJ+jruGKPHDKsEC8kmoybobH3TZx2njBR3ipEsquZFo=
SecondaryKey      : sJ+jruGKPHDKsEC8kmoybobH3TZx2njBR3ipEsquZFo=

现在我想将这条命令产生的 PrimaryKey 设置在管道变量 CacheConnectionKey 中,以便下一个进程可以正确使用该值。

【问题讨论】:

  • 你想在同一次运行中使用它吗?同一份工作?还是在管道的另一次运行中?
  • 我想在管道的同一运行中使用它,但在不同的工作中。

标签: azure-devops azure-pipelines azure-cli azure-pipelines-tasks


【解决方案1】:

我想问题中提到的“过程”可能类似于运行/作业/阶段/管道。无论如何,在 YAML 管道中,您可以在根、阶段和作业级别设置变量。您还可以使用variable group 使变量在多个管道中可用。一些任务定义了输出变量,您可以在下游步骤、作业和阶段中使用这些变量。

在 YAML 中,您可以使用 dependencies 跨作业和阶段访问变量。默认情况下,管道中的每个阶段都依赖于 YAML 文件中它之前的阶段。因此,如果您需要引用一个不是紧接在当前阶段之前的阶段,您可以通过向该阶段添加 dependsOn 部分来覆盖此自动默认值。

例如,假设您有一个名为 MyTask 的任务,它设置了一个名为 MyVar 的输出变量。

在同一个作业中使用输出:

steps:
- task: MyTask@1  # this step generates the output variable
  name: ProduceVar  # because we're going to depend on it, we need to name the step
- script: echo $(ProduceVar.MyVar) # this step uses the output variable

在不同的工作中使用输出:

jobs:
- job: A
  steps:
  # assume that MyTask generates an output variable called "MyVar"
  - task: MyTask@1
    name: ProduceVar  # because we're going to depend on it, we need to name the step
- job: B
  dependsOn: A
  variables:
    # map the output variable from A into this job
    varFromA: $[ dependencies.A.outputs['ProduceVar.MyVar'] ]
  steps:
  - script: echo $(varFromA) # this step uses the mapped-in variable

有关语法和示例的更多详细信息,请查看以下文章:

【讨论】:

猜你喜欢
  • 2021-11-23
  • 1970-01-01
  • 2020-05-28
  • 1970-01-01
  • 2019-08-23
  • 2022-08-24
  • 1970-01-01
  • 1970-01-01
  • 2020-04-24
相关资源
最近更新 更多