在过去的几天里,我一直在尝试通过 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 中的环境的另一个虚拟机。
您正在设置输出变量
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"
尝试删除第二个任务。