bashazureazure-pipelines

Is there a way of extract output of bash script in Azure Pipeline


I have plenty of bash scripts with various variables that being piped into various scripts.

I've been wondering if I can extract an output of bash script that is activated by Azure Pipeline to be a pipeline variable for the rest of the Pipeline runtime?

Example: foo=$(date + %Y%m%d_%H%M%S) output: 20200219_143400, I'd like to get the output for later use on the pipeline.


Solution

  • Depends on how you design your pipeline you can use Azure Pipeline variables:

    1. Inside the same Job:
    - job: Job1
      steps:
      - bash: |
          $WORKDIR/foo.sh
          echo "##vso[task.setvariable variable=foo]$foo"
        name: FooStep
      - bash: |
          $WORKDIR/nextscript.sh $(FooStep.foo)
        name: NextScript
    
    # ...
    
    1. Different jobs:
    - job: Job1
      steps:
      - bash: |
          $WORKDIR/foo.sh
          echo "##vso[task.setvariable variable=foo;isOutput=true]$foo"
        name: FooStep
    - job: Job2
      dependsOn: Job1
      variables:
        outputFooStepFoo: $[ dependencies.Job1.outputs['FooStep.foo'] ]
      steps:
      - bash: |
          $WORKDIR/job2script.sh $(outputFooStepFoo)
        name: Job2ScriptStep
    
    # ...
    

    So, you need to "print to pipeline console" with ##vso[task.setvariable] all variables you need to save to output, and after to pass them as scripts arguments values.