Después de buscar en diferentes repositorios y páginas webs al concluir hemos hallado la resolución que te compartimos pronto.
Solución:
Comparta variables entre etapas en Azure DevOps Pipelines
Lamento decir que no se admite compartir la variable que se definió en una etapa y pasarla a otra etapa.
Esta es la función que planeamos agregar, pero hasta ahora no es compatible. Puedes seguir este problema de Github, muchas personas tienen la misma demanda contigo. Puedes seguir el rastro de eso.
Hasta ahora, solo admitimos establecer una variable de salida de trabajo múltiple, pero esto solo es compatible con YAML. Para Classic Editor, no hay ningún plan para agregar esta función en el lanzamiento.
Para solucionarlo, puede predefinir las variables antes de las etapas. Pero una cosa importante es si cambia su valor en una etapa. El nuevo valor no se pudo pasar a la siguiente etapa. El tiempo de vida de la variable con valor nuevo solo existe en la etapa.
Actualizado:
La función Compartir variables entre etapas se ha lanzado en Sprint 168 ahora.
Utilice el siguiente formato para acceder a las variables de salida de la etapa anterior:
stageDependencies.stageName.jobName.outputs['stepName.variableName']
Los trabajos ahora pueden acceder a variables de etapas anteriores
Las variables de salida aún se producen mediante pasos dentro de los trabajos. en lugar de referirse a dependencies.jobName.outputs['stepName.variableName']
las etapas se refieren a stageDependencies.stageName.jobName.outputs['stepName.variableName']
.
https://docs.microsoft.com/en-us/azure/devops/release-notes/2020/sprint-168-update#azure-pipelines-1
Lo que es importante mencionar stageDependencies
no está disponible en condition
a nivel de escenario. Está disponible en trabajos, pero no en escenario directamente (al menos por el momento).
stages:
- stage: A
jobs:
- job: JA
steps:
- script: |
echo "This is job Foo."
echo "##vso[task.setvariable variable=doThing;isOutput=true]Yes" #The variable doThing is set to true
name: DetermineResult
- script: echo $(DetermineResult.doThing)
name: echovar
- job: JA_2
dependsOn: JA
condition: eq(dependencies.JA.outputs['DetermineResult.doThing'], 'Yes')
steps:
- script: |
echo "This is job Bar."
#stage B runs if DetermineResult task set doThing variable n stage A
- stage: B
dependsOn: A
jobs:
- job: JB
condition: eq(stageDependencies.A.JA.outputs['DetermineResult.doThing'], 'Yes') #map doThing and check if true
variables:
varFromStageA: $[ stageDependencies.A.JA.outputs['DetermineResult.doThing'] ]
steps:
- bash: echo "Hello world stage B first job"
- script: echo $(varFromStageA)
Calificaciones y comentarios
Acuérdate de que tienes permiso de decir si diste con la solución.