Saltar al contenido

Comparta variables entre etapas en Azure DevOps Pipelines

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *