es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Pasando variables a trabajos no dependientes en las Canalizaciones Yaml de Azure DevOps.

Estoy intentando pasar una variable de un trabajo a múltiples trabajos no dependientes. Funciona para trabajos dependientes. Sin embargo, no funciona para trabajos no dependientes. Tengo una tubería yaml definida así.

Funciona bien en el trabajo JobB. Pero cuando lo intento en un trabajo descendente diferente como JobC no funciona. Además, no puedo establecer la variable en cada trabajo ya que también hay un trabajo sin agente de validación manual en el medio. Quiero usar la misma variable en diferentes trabajos no dependientes dentro del mismo escenario. Por favor ayuda. Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para pasar una variable de un trabajo a múltiples trabajos no dependientes dentro de la misma etapa, se pueden usar variables de salida y combinaciones dependsOn. En su actual pipeline YAML, el valor ‘newVar2’ se establece en JobB usando dependencies.JobA.outputs[‘var_test.myVarNew’] y se usa en la tarea posterior. Sin embargo, cuando intenta usar el mismo enfoque en JobC, no funciona porque JobC no depende directamente de JobA.

    Para solucionarlo, puede definir una variable de salida en JobA y usar la función dependsOn para asegurarse de que JobB y JobC esperen a que JobA termine la ejecución. Así es como puede modificar su pipeline YAML:

    jobs:
      - job: JobA
        steps: 
          - task: Bash@3
            name: var_test       
            inputs:
              targetType: 'inline'
              script: |           
                myVar=demo-value    
                echo "##vso[task.setvariable variable=myVarNew;isOutput=true]$myVar"              
        outputs:
          myVarNew: ${{ steps.var_test.outputs.myVarNew }}
    
    
      - job: JobB          
        dependsOn: 
          - JobA
        variables:
          - name: newVar2
            value: $[ dependencies.JobA.outputs['myVarNew'] ]
        steps:
          - task: Bash@3         
            inputs:
              targetType: 'inline'
              script: |            
                echo "$(newVar2)"
    
      - job: JobC          
        dependsOn: 
          - JobA
        variables:
          - name: newVar2
            value: $[ dependencies.JobA.outputs['myVarNew'] ]
        steps:
          - task: Bash@3         
            inputs:
              targetType: 'inline'
              script: |
                echo "$(newVar2)"
    

    En este pipeline YAML modificado, JobA define una variable de salida ‘myVarNew’ usando steps.var_test.outputs.myVarNew. Esta variable se puede acceder a través de dependencies.JobA.outputs[‘myVarNew’] en los trabajos B y C. Además, tanto los trabajos B como C tienen el atributo dependsOn establecido en JobA, lo que garantiza que JobA se ejecute primero y produzca la variable de salida antes de que se ejecuten los trabajos B y C.

    ¡Espero que esto ayude!

Comments are closed.