无法在 YAML 管道中针对两个虚拟机的两个阶段之间传递变量

问题描述 投票:0回答:1

在过去的几天里,我一直在尝试通过 ADO 环境从在服务器 1 上运行的阶段 1 传递一个变量,以在另一个虚拟机(服务器 2)上执行的阶段 2 上输出。

这可以通过 ADO YAML Pipeline 来完成吗?

trigger:
- main

pool:
  vmImage: 'windows-latest'

resources:
  repositories:
    - repository: DevRepo
      type: git
      name: ProjectDevDevRepo
      ref: refs/heads/Dev-Pipeline01

stages:
  - stage: stage1    
    jobs:
      - deployment: dev
        displayName: Running Deployment    
        environment: 
          name: 'Develop SQL'
          resourceType: virtualMachine
          tags: 'Server1'

         strategy:
          runOnce:
            deploy:
              steps:
              - powershell: |
                  Write-Host "##vso[task.setvariable variable=myStageVal; isOutput=true]this is a stage output variable"                  
                name: MyOutputVar
              - powershell: |
                  Get-ChildItem Env:
                  Write-Host "Set variable myStageVal to 'this is a stage output variable'"
                  Write-Host "##vso[task.setvariable variable=myStageVal; isOutput=true]this is a stage output variable"   

      - stage: stage2
          dependsOn: stage1
          variables:
            myStageAVar: $[ stageDependencies.stage1.dev.outputs['MyOutputVar.myStageVal'] ]        
            jobs:
            - deployment: qa
              displayName: Running Deployment    
              environment: 
                name: 'Develop SQL'
                resourceType: virtualMachine
                tags: 'Server2'

              strategy:
                runOnce:
                  deploy:
                    steps:
                      - powershell: |
                          Write-Host "Output variable from stage1: $(myStageAVar)"
                          Write-Host "Variable content: $(myStageAVar)"
                      - powershell: |
                          Get-ChildItem Env:
                          Write-Host "Retrieved variable myStageAVar as $(myStageAVar)"

查看是否可以在使用环境的 1 个虚拟机之间将变量传递到使用 ADO 中的环境的另一个虚拟机。

azure-devops azure-pipelines azure-pipelines-yaml
1个回答
0
投票

您正在设置输出变量

myStageVal
两次:

  - powershell: |
      Write-Host "##vso[task.setvariable variable=myStageVal; isOutput=true]this is a stage output variable"                  
    name: MyOutputVar
  - powershell: |
      Get-ChildItem Env:
      Write-Host "Set variable myStageVal to 'this is a stage output variable'"
      Write-Host "##vso[task.setvariable variable=myStageVal; isOutput=true]this is a stage output variable"  

尝试删除第二个任务。

© www.soinside.com 2019 - 2024. All rights reserved.