【问题标题】:How do I use a environment variable with output from one stage to the next?如何使用具有从一个阶段到下一个阶段的输出的环境变量?
【发布时间】:2021-12-29 09:30:58
【问题描述】:

如何将我的环境变量从第一阶段转移到第二阶段?

问题 -> 我从回显结果中得到一个空的 "" 值。

天蓝色管道.yml

trigger:
  branches:
    include:
    - main
  paths:
    include:
    - infra/*
    - .pipelines/*

variables:
  vmImageName: 'ubuntu-latest'
  root: $(System.DefaultWorkingDirectory)

stages:
- stage: TakePITR
  dependsOn: []
  variables:
    env: poc
  jobs:
  - job: GetPitrTime
    steps:
    - task: PowerShell@2
      inputs:
        targetType: 'inline'
        script: |
          $iso8601_time = Get-Date -Format "o"
          echo "##vso[task.setvariable variable=pitr_time;isOutput=True]$iso8601_time"
        name: PitrVar
        displayName: "Get point-in-time before second stage"

- stage: TestOutputEnvVar
  dependsOn: TakePITR
  variables:
    env: poc
    PITR: $[ stageDependencies.TakePITR.GetPitrTime.outputs['PitrVar.pitr_time']]
  jobs:
  - job:
    steps:
    - script: |
        echo $pitr_time
        echo $PITR
      displayName: 'echo value'

我不明白我在这里做错了什么。

这是我的管道的结果:

【问题讨论】:

    标签: azure powershell azure-devops azure-pipelines


    【解决方案1】:

    您有缩进问题:

        - task: PowerShell@2
          inputs:
            targetType: 'inline'
            script: |
              $iso8601_time = Get-Date -Format "o"
              echo "##vso[task.setvariable variable=pitr_time;isOutput=true]$iso8601_time"
          name: PitrVar
          displayName: "Get point-in-time before second stage"
    

    Name 和 displayName 应与 input 处于同一级别,然后:

    完整代码在这里

    trigger:
      branches:
        include:
        - main
      paths:
        include:
        - infra/*
        - .pipelines/*
    
    variables:
      vmImageName: 'ubuntu-latest'
      root: $(System.DefaultWorkingDirectory)
    
    stages:
    - stage: TakePITR
      dependsOn: []
      variables:
        env: poc
      jobs:
      - job: GetPitrTime
        steps:
        - task: PowerShell@2
          name: PitrVar
          displayName: "Get point-in-time before second stage"
          inputs:
            targetType: 'inline'
            script: |
              $iso8601_time = Get-Date -Format "o"
              echo "##vso[task.setvariable variable=pitr_time;isOutput=true]$iso8601_time"
    
    - stage: TestOutputEnvVar
      dependsOn: TakePITR
      variables:
        env: poc
        PITR: $[ stageDependencies.TakePITR.GetPitrTime.outputs['PitrVar.pitr_time']]
      jobs:
      - job:
        steps:
        - script: |
            echo $pitr_time
            echo $PITR
          displayName: 'echo value'
    

    【讨论】:

      猜你喜欢
      • 2019-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-29
      • 1970-01-01
      相关资源
      最近更新 更多